SQL JOIN 带空

标签 sql join

当没有包含 D.MetaDataID = '580c215f-54cb-4449-8368-7d740be71973' 和数据表的行时,我该怎么做才能使我的语句返回 Null?

我试过 Left JOIN 但没有任何改变...... :(

SELECT 
D.Value
FROM dbo.Item I
JOIN dbo.Data D ON D.ItemID = I.ID
WHERE  I.ItemTypeID = '14ea6709-1bf8-4d5c-9090-3ace3cc42874' --Instance.album
       AND D.MetaDataID = '580c215f-54cb-4449-8368-7d740be71973' --freepacks

最佳答案

您需要一个 LEFT JOIN 并将 D 上的条件移动到 ON 子句中,而不是 WHERE .在 WHERE 子句中,这会将您的查询转换回内部联接。

SELECT D.Value
FROM   dbo.Item I
       LEFT JOIN dbo.Data D
         ON D.ItemID = I.ID
            AND D.MetaDataID = '580c215f-54cb-4449-8368-7d740be71973'
--freepacks
WHERE  I.ItemTypeID = '14ea6709-1bf8-4d5c-9090-3ace3cc42874' --Instance.album

关于SQL JOIN 带空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449166/

相关文章:

sql - 文件系统管理工具

sql - 在 JOIN 之后选择 DISTINCT 值

join - 用于自引用关联的 Ecto 查询

postgresql - 加入 generate_series 并计数

SQL - 1 个父表,2 个子表 - 为子表中的每一行返回单行

sql - IIS 连接到 LocalDB

sql - 显示 postgresql 表中的所有数据 - Heroku, JackDB

mysql - 获取所有行的总和

MySQL CASE更新多列

从多个表返回所有列的函数 (PostgreSQL)