MySQL在(唯一)NON-SEQUENTIAL整数字段中发现缺少数字



我有一列30到999之间的非连续唯一整数。

我需要显示一个下拉列表,其中包含可用的数字。

我可以在这个论坛上使用一些解决方案,但它们都适用于序列号字段。

我也可以使用我的应用程序中的代码来处理这个问题,但速度要慢得多。我相信让数据库引擎做尽可能多的工作。

在处理表字段之前,有没有方法对其进行排序(即创建一个顺序列表(?

一个很好的方法是在MySQL数据库中简单地维护一个从30到999的值序列。然后,您可以按如下方式留下join以生成可用号码列表:

SELECT t1.id
FROM
(
SELECT 30 AS id UNION ALL      -- replace this inline table
SELECT 31 UNION ALL            -- with a formal sequence table
...
SELECT 998 UNION ALL
SELECT 999
) t1
LEFT JOIN yourTable t2
ON t2.id = t1.id
WHERE
t2.id IS NULL;

您可以将上面别名为t1的内联子查询替换为数据库中的正式序列表。

相关内容

最新更新