slds
上的数据由protocol_id
(protocols
的外键)、tld_id
(protocols
的外键)组成tlds
) 和 sld_name
。
我需要从 protocols
和 tlds
中选择主键值,然后将这两个键和剩余的 sld_name
插入到 slds
。
我似乎无法在正确的位置构建“google”。我在这里缺少什么?
INSERT INTO `slds` (sld_name, protocol_id, tld_id)
"google",
SELECT `id` FROM `protocols`
WHERE `protocol_name`="https"
UNION ALL
SELECT `id` FROM `tlds`
WHERE `tld_name`="com"
此外,假设这是可能的,我如何使用此方法插入 n 行?
感谢任何建议:)
最佳答案
UNION ALL
连接 ROW。你想要的是一个单一的值(value):
INSERT INTO slds (sld_name, protocol_id, tld_id)
SELECT
'google',
(SELECT id FROM protocols WHERE protocol_name = 'https'),
(SELECT id FROM tlds WHERE tld_name = 'com');
关于MySQL 如何插入带有 SELECT UNION ALL 和附加参数的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54898407/