我正在尝试将多个不同表中的多个值插入表中。这是一个简单的示例(实际上这几乎没有用,但如果我发布完整的查询,理解起来会更复杂):
CREATE TABLE person (
id INT PRIMARY KEY,
lastName VARCHAR(100),
firstName VARCHAR(50),
dob DATE,
telNo VARCHAR(20)
);
CREATE TABLE postcode (
id INT PRIMARY KEY,
postcode VARCHAR(10),
);
CREATE TABLE name (
id INT PRIMARY KEY,
lastName VARCHAR(100),
firstName VARCHAR(50)
);
INSERT INTO postcode VALUES(21, "DN3 1SU");
INSERT INTO name VALUES(21, "Smith", "John");
INSERT INTO person (id, lastName, firstName, dob, telNo) VALUES (
(SELECT id FROM postcode WHERE postcode="DN3 1SU"),
(SELECT lastName, firstName FROM name WHERE id=21),
"1991-12-20",
"075935678923"
);
我基本上试图根据其他表中的数据(其中我从每个表中获取的列数不同)和一些文字值在表中构造一个新行。
使用我当前使用的方法,VALUES 不接受第二个 SELECT 语句,因为它提供两列,而不是一列。
最佳答案
只需使用INSERT ... SELECT
附加查询即可:
INSERT INTO `person` (id, lastName, firstName, dob, telNo)
SELECT p.id, n.lastName, n.firstName, '1991-12-20', '075935678923'
FROM `postcode` p
INNER JOIN `name` n ON p.id = n.id AND n.id = 21
WHERE p.postcode = 'DN3 1SU'
关于MySQL INSERT 具有多个 SELECTS,返回列数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47464078/