如何选择此示例中未使用的代码

Posted

技术标签:

【中文标题】如何选择此示例中未使用的代码【英文标题】:How select for not used codes in this sample 【发布时间】:2012-08-14 08:31:39 【问题描述】:

我在SQL 数据库的表中有一个int 列。 我在这张表中保留了一些代码。 我的代码示例范围是:(1, 9)。 我不需要使用这个范围内的代码。

示例: 使用的代码是:

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

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

现在,我该如何选择此代码?预期结果是:1,3,4,5

【问题讨论】:

你在哪里维护代码列表? @danish 使用的代码列表在数据库的表中。我的真实范围是恒定的:(1000,25000) 【参考方案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 子句。 例子:

Optimizing Numbers Table Creation on SQL Server? What is the best way to create and populate a numbers table?

【讨论】:

(1,9) 的范围是例如。我的真实范围是(1000,25000)。现在我该怎么办?【参考方案2】:

恕我直言,您应该在数据库的查找表中维护有效代码列表,并将使用的代码作为另一个表中的外键字段(您的帖子中的 MyTable)。

假设您创建了一个表来保存名为 LookUpTable 的代码,该表具有代码 id 和代码。在另一张表中,您将代码 id 作为外键。然后,您可以使用以下查询:

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

【讨论】:

以上是关于如何选择此示例中未使用的代码的主要内容,如果未能解决你的问题,请参考以下文章

iOS:iCarousel 中未选择视图的约束

在php中未选择单选按钮时如何返回值0

如果在 Kotlin 中未选择项目,如何更改文本视图的重力?

如何更改 iOS 7 中未选择的标签栏项目的颜色?

java - 如何获取Java Swing列表中未选择的右键单击项目?

从自动完成下拉列表中未选择任何选项时如何清除 mat- 自动完成