Sql server 基于多个值的sql选择
我们使用的是SQL Server 2008,下表的一个示例。我需要查询下表,只给我的链接结果,如果没有'C'的代码存在,但因为链接957下面已经有一个C代码,我不希望957返回在所有,我只希望950和955Sql server 基于多个值的sql选择,sql-server,Sql Server,我们使用的是SQL Server 2008,下表的一个示例。我需要查询下表,只给我的链接结果,如果没有'C'的代码存在,但因为链接957下面已经有一个C代码,我不希望957返回在所有,我只希望950和955 link code --------------------------------- 957 A 957 B 957
link code
---------------------------------
957 A
957 B
957 C
957 D
955 A
955 B
950 D
950 E
您可以在此上使用
notexists()
SELECT a.*
FROM tableName a
WHERE NOT EXISTS
(
SELECT 1
FROM tableName b
WHERE a.link = b.link AND
b.code = 'c'
)
链接
SELECT DISTINCT a.link
FROM tableName a
WHERE NOT EXISTS
(
SELECT 1
FROM tableName b
WHERE a.link = b.link AND
b.code = 'c'
)
不存在()
SELECT a.*
FROM tableName a
WHERE NOT EXISTS
(
SELECT 1
FROM tableName b
WHERE a.link = b.link AND
b.code = 'c'
)
但是如果您只想单独获得链接
SELECT DISTINCT a.link
FROM tableName a
WHERE NOT EXISTS
(
SELECT 1
FROM tableName b
WHERE a.link = b.link AND
b.code = 'c'
)
尝试以下示例:
SELECT DISTINCT link
FROM TABLE
WHERE link NOT IN (
SELECT link
FROM TABLE
WHERE code LIKE 'C'
)
请尝试以下示例:
SELECT DISTINCT link
FROM TABLE
WHERE link NOT IN (
SELECT link
FROM TABLE
WHERE code LIKE 'C'
)
如果您不想使用嵌套查询,以下操作也可以:
SELECT link
FROM table
GROUP BY link
HAVING SUM(CASE WHEN CODE = 'C' THEN 1 ELSE 0 END) = 0
如果您不想使用嵌套查询,以下操作也可以:
SELECT link
FROM table
GROUP BY link
HAVING SUM(CASE WHEN CODE = 'C' THEN 1 ELSE 0 END) = 0
SUM(CASE WHEN CODE='C',然后1 ELSE 0 END)=0因为他不想要'C'Awesome,谢谢Willwpan,这样做了。我很好奇哪个查询更快。我的意思是我的和这个。你能用大量数据测试它,并在结果时间上加上注释吗?SUM(CASE WHEN CODE='C',然后1 ELSE 0 END)=0因为他不想要'C'Awesome,谢谢Willwpan,就是这样。我很好奇哪一个查询更快。我的意思是我的和这个。你能用大量的数据来测试它,并在结果上加上注释吗?