我有一列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
的内联子查询替换为数据库中的正式序列表。