我有一个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的在您的文章)。
假设你已经创建了一个表来保存具有ID代码和代码名称LookupTable中的代码。 在其他表,你有代码id作为foriegn关键。 然后,你可以用下面的查询:
SELECT LOOKUPTABLE.Code
FROM LOOKUPTABLE LEFT JOIN FOREIGNKEYTABLE ON LOOKUPTABLE.ID = FOREIGNKEYTABLE.CodeID
WHERE FOREIGNKEYTABLE.USERID IS NULL