我正在开发一个必须为元素分配数字代码的应用程序.这个代码不是连续的,我的想法是不要将它们插入到数据库中,直到有相关的元素,但我想在sql问题中找到未分配的代码,我不知道该怎么做.
有任何想法吗?谢谢!!!
编辑1
表格可以这么简单:
code | element ----------------- 3 | three 7 | seven 2 | two
我想要这样的东西:1,4,5,6.没有任何其他桌子.
编辑2
感谢您的反馈,您的答案非常有用.
NULL
如果未分配代码,则会返回:
SELECT assigned_codes.code FROM codes LEFT JOIN assigned_codes ON assigned_codes.code = codes.code WHERE codes.code = @code
这将返回所有未分配的代码:
SELECT codes.code FROM codes LEFT JOIN assigned_codes ON assigned_codes.code = codes.code WHERE assigned_codes.code IS NULL
没有纯粹的SQL
方法来完成你想要的东西.
在Oracle
,您可以执行以下操作:
SELECT lvl FROM ( SELECT level AS lvl FROM dual CONNECT BY level <= ( SELECT MAX(code) FROM elements ) ) LEFT OUTER JOIN elements ON code = lvl WHERE code IS NULL
在PostgreSQL
,您可以执行以下操作:
SELECT lvl FROM generate_series( 1, ( SELECT MAX(code) FROM elements )) lvl LEFT OUTER JOIN elements ON code = lvl WHERE code IS NULL