3

我有以下 SQL 语句(用于 SQL Server):

INSERT INTO t1 (c1, c2) 
VALUES (1, CASE WHEN (SELECT MAX(c2) FROM t1 AS maxV) IS NOT NULL THEN maxV+1 ELSE 1 END);

我收到一个错误:“列名 'maxV' 无效”

为什么?

4

3 回答 3

4

尝试使用COALESCE

INSERT INTO t1 (c1, c2) 
SELECT 1, COALESCE(MAX(c2), 0) + 1
FROM t1
于 2011-11-12T08:20:06.157 回答
1

试试这个...

INSERT INTO t1 (c1, c2) 
VALUES (
    1, 
    CASE 
        WHEN (SELECT MAX(c2) FROM t1) IS NOT NULL 
        THEN (SELECT MAX(c2)+1 FROM t1)
        ELSE 1 
    END);
于 2011-11-12T08:18:03.527 回答
1

另一种方法...

INSERT INTO t1 (c1, c2) 
VALUES (1, ISNULL(SELECT MAX(c2) FROM t1, 0)+1);
于 2011-11-12T08:21:45.443 回答