MySQL 如何插入带有 SELECT UNION ALL 和附加参数的表?

标签 mysql sql

slds上的数据由protocol_id(protocols的外键)、tld_id(protocols的外键)组成tlds) 和 sld_name

我需要从 protocolstlds 中选择主键值,然后将这两个键和剩余的 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/

相关文章:

java - 如何从 Hibernate Criteria API 获取 SQL(*not* 用于日志记录)

sql - 如何将LINQ中的两个查询合并为Fluent NHibernate?

mysql - 使用 SQL 将数据库导出为 .CSV

php - 如何实现搜索功能? (用人们搜索的内容替换某些内容)

sql - 无法理解使用 where 和 group by 的子查询代码

mysql - 如何将where子句变量放在select查询的第一层

sql - 查找不同天数间隔内特定 "Project"的 "User"计数

mysql - 如何替换特定字符串的前后字符

mysql - 如何仅对付款总额为正的记录进行分组?

sql - 将组分成单独记录的有效方法