选择不存在的元素

Alf*_*re2 0 sql select

我正在开发一个必须为元素分配数字代码的应用程序.这个代码不是连续的,我的想法是不要将它们插入到数据库中,直到有相关的元素,但我想在sql问题中找到未分配的代码,我不知道该怎么做.

有任何想法吗?谢谢!!!

编辑1

表格可以这么简单:

code | element 
-----------------
3    | three 
7    | seven 
2    | two
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:1,4,5,6.没有任何其他桌子.

编辑2

感谢您的反馈,您的答案非常有用.

Qua*_*noi 6

NULL如果未分配代码,则会返回:

SELECT  assigned_codes.code
FROM    codes 
LEFT JOIN
        assigned_codes
ON      assigned_codes.code = codes.code
WHERE   codes.code = @code
Run Code Online (Sandbox Code Playgroud)

这将返回所有未分配的代码:

SELECT  codes.code
FROM    codes 
LEFT JOIN
        assigned_codes
ON      assigned_codes.code = codes.code
WHERE   assigned_codes.code IS NULL
Run Code Online (Sandbox Code Playgroud)

没有纯粹的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
Run Code Online (Sandbox Code Playgroud)

PostgreSQL,您可以执行以下操作:

SELECT  lvl
FROM    generate_series(
        1,
        (
        SELECT  MAX(code)
        FROM    elements
        )) lvl
LEFT OUTER JOIN
        elements
ON      code = lvl
WHERE   code IS NULL
Run Code Online (Sandbox Code Playgroud)