如何通过Outer Join关联固定值查询?适配SQL Server与MySQL
跨SQL Server与MySQL的固定ID集合左连接解决方案
要实现将固定ID集合作为必填字段与表X执行外连接,同时适配SQL Server和MySQL,可采用标准SQL的临时数据集左连接写法,具体如下:
通用解决方案代码
SELECT fixed_ids.id, x.name FROM ( VALUES (1), (3), (10) ) AS fixed_ids(id) LEFT JOIN x ON fixed_ids.id = x.id;
逻辑说明
- 用
VALUES子句构造包含目标固定ID的临时数据集fixed_ids,作为左表; - 通过
LEFT JOIN关联表X,关联条件为两边ID相等; - 左连接会保留左表(固定ID集合)的所有记录:匹配到表X中对应ID的记录时,带出
name字段值;未匹配的记录,name字段显示null,完全符合期望结果。
结果验证
执行上述语句后,返回结果与预期一致:
id name 1 A 3 C 10 null
说明:为何原尝试语句不可用
原语句中的IN (...) (+)是Oracle专属的旧版外连接语法,SQL Server和MySQL均不支持,且该写法本质是过滤表X的记录,无法保留未匹配的固定ID。
内容的提问来源于stack exchange,提问作者Angel Doza
相关产品推荐
相关产品推荐

