我有一个类似于以下的表格:
name | language | text
-----------------------------
greet | 1 | hello
greet | 2 | bonjour
blue | 1 | blue
blue | 2 | bleu
red | 1 | red
green | 1 | green
yellow | 1 | yellow
Run Code Online (Sandbox Code Playgroud)
我需要检索仅存在于语言编号1的所有记录,因此在上面的示例中,我应该只有一个包含红色,绿色和黄色的列表.我真的不太了解sql连接,所以不确定最好的方法是什么?任何帮助,将不胜感激
用途NOT EXISTS:
SELECT t.*
FROM dbo.TableName t
WHERE t.language = 1
AND NOT EXISTS
(
SELECT 1 FROM dbo.TableName t2
WHERE t.name = t2.name
AND ( t2.language IS NULL OR t2.language <> 1 )
)
Run Code Online (Sandbox Code Playgroud)
我已经包含t2.language IS NULL了向您展示如何处理NULL-values,如果它只是您需要的非空列t2.language <> 1.这是最可读和最有效的方法,没有NULL值的问题.还有其他人.