mysql 如何通过引用我在SQL中创建的另一个表中的列将数据插入到我创建的一个表中?

xlpyo6sf  于 2023-08-02  发布在  Mysql
关注(0)|答案(2)|浏览(136)

我创建了两个表,animation_companies和cartoon_characters。我得到了一个“文档来模拟来自主管的请求,将信息插入到我创建的数据库中。数据如下:
Animation_Companies表将仅包含以下三(3)条记录:

Warner Bros.
Disney
Nickelodeon

字符串
Cartoon_Characteristics表将仅包含十四(14)条记录,其中包含卡通的名称、创建年份和拥有卡通的公司。
公司“华纳兄弟”,“迪士尼”和“尼克”仅用于展示目的。必须从Animation_Companies表中引用它。

|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 |


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

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)
);


我已使用以下命令将数据插入到animation_companies的记录中:

INSERT INTO animation_companies(CompanyName) 
VALUES ('Warner Bros.'), ('Disney'), ('Nickelodeon');


我所提出的问题如下:
“在Cartoon_Characters表中插入数据:
不使用列列表,编写语句插入卡通名称、创建年份以及所属公司。
备注:
用单引号将字符串括起来注意间距自动递增值使用DEFAULT公司由整数ID引用”
这句话是我尝试的:

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);

bxfogqkk

bxfogqkk1#

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

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

字符串
然后将其JOINAnimation_Companies

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

7eumitmz

7eumitmz2#

2个错误
1.上次插入DEFAULT,'Aang' 2005,'Nickelodeon',3)'Aang'后面缺少逗号
1.所属公司名称在卡通字符表中为int,但您传递的字符串将抛出错误。这是多余的,可以丢弃。您可以使用联接在select中获取名称。
表名(和列名)也要保持一致,以防遇到大小写敏感问题。
否则,插入是正确的。

相关问题