SQL Server从一列中选择最大值,并检查该值是否存在于另一个表中

时间:2018-04-13 03:23:32

标签: sql sql-server

我正在使用SQL Server,而我正在使用INSERT语句。

这是我的步骤:

第1步:从table B中的列中选择最高值。该列中的值未序列化。然后添加+1(例如,最高值为45,则此步骤的最终结果为46)

第2步:然后,检查table B

中是否存在46

第3步:如果"0123456789abcdefghijklmnopqrstuvwxyz"中存在该号码,则再次递增1并再次检查。

知道如何编写代码?

2 个答案:

答案 0 :(得分:2)

如果可能,请使用“序列”。它生成数值序列,并且可以在表之间共享。

否则

SELECT MAX(MAXVAL) FROM 
 (
    SELECT MAX(VAL) AS MAXVAL FROM TableA
    UNION
    SELECT MAX(VAL) AS MAXVAL FROM TableB
 )T

答案 1 :(得分:0)

您可以编写递归CTE来实现此目的。

以下是示例代码

;WITH CTE AS 
            (
                    SELECT MAX(VAL)+1 AS MAXVAL FROM TableA
            ),CTE2 AS
           ( SELECT MAX(VAL) +1 AS MAXVAL FROM TableB            where exists (SELECT 1 FROM CTE WHERE MAXVAL=TableB.MAXVAL)

)

SELECT MAXVAL FROM CTE2