如何选择此样品中未使用的代码(How select for not used codes in th

2019-07-30 23:35发布

我有一个int在我的表列SQL数据库。 我把一些代码在此表中。 对于我的代码样品的范围是:(1,9)。
我需要在此范围内未使用的代码。

例:
使用的代码是:

Select code from MyTable  -- result is 2,6,7,8,9

未使用的代码是:1,3,4,5

现在,我该怎么选择这个代码? 预期结果是: 1,3,4,5

Answer 1:

生成号码列表为您范围(这里我用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子句。 例子:

  • SQL Server上优化的数字表创建?
  • 什么是创建和填充数字表的最佳方式?


Answer 2:

恕我直言,你应该保持有效代码列表中查找表的数据库,并在另一个表中使用的代码作为一个外键字段(MyTable的在您的文章)。

假设你已经创建了一个表来保存具有ID代码和代码名称LookupTable中的代码。 在其他表,你有代码id作为foriegn关键。 然后,你可以用下面的查询:

SELECT  LOOKUPTABLE.Code 
FROM    LOOKUPTABLE LEFT JOIN FOREIGNKEYTABLE ON LOOKUPTABLE.ID = FOREIGNKEYTABLE.CodeID 
WHERE FOREIGNKEYTABLE.USERID IS NULL


文章来源: How select for not used codes in this sample