如何编写执行以下操作的单个select语句:

我的表中有一个整数列,我想在该列中找到最小可用(未使用)值,该值低于1000,并且在TableB Column1中不存在该值

谢谢

最佳答案

与LukeH的答案类似,但它可以满足您的要求:

SELECT MIN(a.your_column) - 1 AS answer
FROM your_table AS a
LEFT JOIN your_table AS a2
        ON a2.your_column = a.your_column - 1
LEFT JOIN tableB AS b
        ON a.your_column = b.column1
WHERE a.your_column < 1000
    AND b.column1 IS NULL
    AND a2.your_column IS NULL

编辑:
UNION
SELECT MIN(a.your_column) + 1 AS answer
FROM your_table AS a
LEFT JOIN your_table AS a2
        ON a2.your_column = a.your_column + 1
LEFT JOIN tableB AS b
        ON a.your_column = b.column1
WHERE a.your_column < 1000
    AND b.column1 IS NULL
    AND a2.your_column IS NULL

并选择两个值的最小值。

它仍然需要检查值1是否可用,但是如果您在A和B之间留有间隔,则应该立即找到A + 1和B-1,并且可以选择最小的值。显然A + 1是最小的,因此您可以只使用第二部分...

关于sql - SQL查询:在主键中查找空白,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3870911/

10-17 01:39