2

我刚刚读了一个问题,正是我正在寻找的: SO original question

让我们考虑一下我有一个表“Tab”,其中有一列“Col”

表'Tab'有这个数据 -

Col
1
2
3
4
5

如果我有一组值(2,3,6,7)。我可以通过使用查询来查询表和列表中存在的值

Select Col from Tab where col IN (2,3,6,7)

但是,如果我想返回列表中不存在于表中的值,即在这种情况下仅返回 (6,7)。我应该使用什么查询?

我找到了几种涉及创建临时表的解决方案,但在那里找到的最好的解决方案(至少更短,我想也更快)适用于 SQL Server,并且在我看来不适用于 SQLite3,因为我需要。

SQL Server 2008 方法

SELECT N FROM (VALUES(2),(3),(6),(7)) AS D (N)
EXCEPT
Select Col from Tab

SQLite 3有什么替代方法吗?

4

1 回答 1

1

在 SQLite 中,您可以SELECT不使用FROM子句来仅返回一条固定记录。要获取多条记录,请将它们与UNION ALL(比UNION不检查重复项稍快):

SELECT 2 AS Col UNION ALL
SELECT 3        UNION ALL
SELECT 6        UNION ALL
SELECT 7                 
EXCEPT
SELECT Col FROM Tab
于 2013-02-01T23:13:28.513 回答