通过在SQL中引用另一张表中的列将数据插入到一张表中
P粉342101652
P粉342101652 2023-08-02 16:27:21
0
1
563
<p>我已经创建了两个表,一个是animation_companies(动画公司),另一个是cartoon_characters(卡通角色)。现在我收到了一个“模拟主管请求插入信息到我创建的数据库”的文档。数据如下所示:<br /><br />animation_companies(动画公司)表将只包含以下三条记录:</p><p><br /></p> <pre class="brush:php;toolbar:false;">Warner Bros. Disney Nickelodeon</pre> <p>cartoon_characters(卡通角色)表将包含仅含有十四(14)条记录,包括卡通角色的名称、创建年份以及拥有该卡通角色的公司。<br /><br />公司"Warner Bros."、"Disney"和"Nickelodeon"仅用于展示目的,必须从animation_companies(动画公司)表中引用。</p><p><br />></p>
|漫画名称 |创建年份 |公司
| ------------- | ------------- |------------ |
|小猪猪|1935 |华纳兄弟|
|达菲鸭 |1937 |华纳兄弟|
|埃尔默·福德 |1937 |华纳兄弟|
|兔八哥|1940 |华纳兄弟|
|来航霍恩|1946 |华纳兄弟|
|米老鼠 |1928 |迪士尼 |
|高飞 |1934 |迪士尼 |
|唐老鸭 |1931 |迪士尼 |
|阿伦黛尔的艾莎|2013 |迪士尼|
|阿伦黛尔的安娜|2013 |迪士尼|
|道格·芬尼 |1991 |Nickelodeon |
|阿诺德·肖特曼|1985 |尼克频道|
|汤米·皮克尔斯 |1991 |Nickelodeon |
|Aang |2005 |Nickelodeon |</pre>
<p>使用以下语句创建了animation_companies(动画公司)表:</p>
创建表Animation_Companies 
(
 CompanyID INT 主键 AUTO_INCREMENT, 
 公司名称 VARCHAR(100) NOT NULL 
); 

表cartoon_characters是使用以下语句创建的:

创建表卡通人物 
(
  卡通ID INT 主键自动递增, 
  卡通名称 VARCHAR(100) NOT NULL, 
  年创建INT,        
  OwningCompany INT NOT NULL, 
  CompanyID INT NOT NULL, 
    约束Cartoon_Characters_fk_Animation_Companies 
    外键(CompanyID)参考Animation_Companies(CompanyID)
);</预>
<p>我使用以下语句向animation_companies(动画公司)表的记录插入了数据:</p>
插入animation_companies(公司名称) 
VALUES ('华纳兄弟'), ('迪士尼'), ('尼克频道');</pre>
<p>我遇到的问题如下所示:<br /><br />"向Cartoon_Characters(卡通角色)表插入数据:<br /><br />gt;不使用列列表,编写插入语句,插入卡通名称、创建年份和类别公司。<br /><br />注意事项:<br /><br />将字符串用单引号括起来 留意空格 自动递增的值使用DEFAULT 公司通过整数ID进行引用"<br /><br />这是我尝试的语句:</p><p><br /></p>
<pre class="brush:php;toolbar:false;">INSERT INTO cartoon_characters
VALUES (DEFAULT, 'Porky Pig', 1935, 'Warner Bros.', 1),
       (DEFAULT, 'Daffy Duck', 1937, 'Warner Bros.', 1),
       (DEFAULT, 'Elmer Fudd', 1937, 'Warner Bros.', 1),
       (DEFAULT, 'Bugs Bunny', 1940, 'Warner Bros.', 1), 
       (DEFAULT, 'Foghorn Leghorn', 1946, 'Warner Bros.', 1),
       (DEFAULT, 'Mickey Mouse', 1928, 'Disney', 2),
       (DEFAULT, 'Goofy', 1934, 'Disney', 2),
       (DEFAULT, 'Donald Duck', 1931, 'Disney', 2),
       (DEFAULT, 'Elsa of Arendelle', 2013, 'Disney', 2),
       (DEFAULT, 'Anna of Arendelle', 2013, 'Disney', 2),
       (DEFAULT, 'Doug Funnie', 1991, 'Nickelodeon', 3),
       (DEFAULT, 'Arnold Shortman', 1985, 'Nickelodeon', 3),
       (DEFAULT, 'Tommy Pickles', 1991, 'Nickelodeon', 3),
       (DEFAULT, 'Aang' 2005, 'Nickelodeon', 3);</pre>
<p><br /></p>            
P粉342101652
P粉342101652

全部回复(1)
P粉738248522

一个方法是先将数据插入到一个临时表中。

INSERT INTO #SomeTempTable
VALUES ('Porky Pig', 1935, 'Warner Bros.', 'Warner Bros');

然后将其与Animation_Companies表进行连接(JOIN)。

INSERT INTO cartoon_characters(cartoonName, YearCreated, OwningCompany, CompanyId)
SELECT t.cartoonName, t.YearCreated, t.OwningCompany, a.CompanyId
FROM #SomeTempTable t
JOIN Animation_Companies a ON a.CompanyName = t.CompanyName
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板