我有一个值列表,并想知道表中还没有哪些值.(这是在sql server 2000上)
考虑以下:
CREATE TABLE myTable ( foo VARCHAR(10) )
GO
INSERT INTO myTable
( foo
)
SELECT 'aaa'
UNION ALL SELECT 'bbb'
UNION ALL SELECT 'ccc'
GO
SELECT foo
FROM myTable
WHERE foo IN ( 'aaa', 'cat', 'bbb', 'dog' )
-- returns 'aaa' and 'bbb'
Run Code Online (Sandbox Code Playgroud)
我需要写一个返回'cat'和'dog'的查询.
SELECT foo
FROM myTable
WHERE foo ????? ( 'aaa', 'cat', 'bbb', 'dog' )
-- returns 'cat' and 'dog'
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法在查询中执行此操作?
由于应用程序与数据库交互的方式,我宁愿不创建临时表
您可以使用union all
和连接构建一个表,过滤与连接不匹配的行:
SELECT myList.foo
FROM (
SELECT 'aaa' as foo
UNION ALL SELECT 'cat'
UNION ALL SELECT 'bbb'
UNION ALL SELECT 'dog'
) myList
LEFT JOIN myTable
ON myTable.foo = myList.foo
WHERE myTable.foo is null
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85 次 |
最近记录: |