我在数据库的表中有一个int
列。SQL
我在这张表中保留了一些代码。对于我的代码的示例范围是:(1, 9)。
我不需要在这个范围内使用代码。
示例:
使用的代码是:
Select code from MyTable -- result is 2,6,7,8,9
未使用的代码是:1,3,4,5
现在,我该如何选择此代码?预期结果是:1,3,4,5
我在数据库的表中有一个int
列。SQL
我在这张表中保留了一些代码。对于我的代码的示例范围是:(1, 9)。
我不需要在这个范围内使用代码。
示例:
使用的代码是:
Select code from MyTable -- result is 2,6,7,8,9
未使用的代码是:1,3,4,5
现在,我该如何选择此代码?预期结果是:1,3,4,5
为您的范围生成一个数字列表(这里我使用VALUES
子句),然后半加入“使用”列表
SELECT
*
FROM
(VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9)) X (Num)
WHERE
NOT EXISTS (SELECT * FROM MyTable M WHERE M.Code = X.Num)
编辑:
您可以用任何数字表生成代码替换 VALUES 子句。例子:
恕我直言,您应该在数据库的查找表中维护有效代码列表,并将使用的代码作为另一个表中的外键字段(您的帖子中的 MyTable)。
假设您创建了一个表来保存名称为 LookUpTable 的代码,该表具有代码 id 和代码。在另一张表中,您将代码 id 作为外键。然后,您可以使用以下查询:
SELECT LOOKUPTABLE.Code
FROM LOOKUPTABLE LEFT JOIN FOREIGNKEYTABLE ON LOOKUPTABLE.ID = FOREIGNKEYTABLE.CodeID
WHERE FOREIGNKEYTABLE.USERID IS NULL