通过在SQL中引用另一张表中的列将数据插入到一张表中
P粉342101652
P粉342101652 2023-08-02 16:27:21
[MySQL讨论组]
<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> <pre class="brush:php;toolbar:false;">|Cartoon Name |Creation Year |Company | ------------- | ------------- |----------- | |Porky Pig |1935 |Warner Bros.| |Daffy Duck |1937 |Warner Bros.| |Elmer Fudd |1937 |Warner Bros.| |Bugs Bunny |1940 |Warner Bros.| |Foghorn Leghorn|1946 |Warner Bros.| |Mickey Mouse |1928 |Disney | |Goofy |1934 |Disney | |Donald Duck |1931 |Disney | |Elsa of Arendelle|2013 |Disney | |Anna of Arendelle|2013 |Disney | |Doug Funnie |1991 |Nickelodeon | |Arnold Shortman|1985 |Nickelodeon | |Tommy Pickles |1991 |Nickelodeon | |Aang |2005 |Nickelodeon |</pre> <p>使用以下语句创建了animation_companies(动画公司)表:</p> <pre class="brush:php;toolbar:false;">CREATE TABLE Animation_Companies ( CompanyID INT PRIMARY KEY AUTO_INCREMENT, CompanyName VARCHAR(100) NOT NULL ); The table cartoon_characters was created using this statement: CREATE TABLE Cartoon_Characters ( cartoonID INT PRIMARY KEY AUTO_INCREMENT, cartoonName VARCHAR(100) NOT NULL, yearCreated INT, OwningCompany INT NOT NULL, CompanyID INT NOT NULL, CONSTRAINT Cartoon_Characters_fk_Animation_Companies FOREIGN KEY (CompanyID) REFERENCES Animation_Companies (CompanyID) );</pre> <p>我使用以下语句向animation_companies(动画公司)表的记录插入了数据:</p> <pre class="brush:php;toolbar:false;">INSERT INTO animation_companies(CompanyName) VALUES ('Warner Bros.'), ('Disney'), ('Nickelodeon');</pre> <p>我面临的问题如下所示:<br /><br />"向Cartoon_Characters(卡通角色)表插入数据:<br /><br />不使用列列表,编写插入语句,插入卡通名称、创建年份和所属公司。<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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号