我遇到一个案例,我希望返回错误的sqlite查询实际上是成功的,我想知道是否有人可以指出为什么这个查询是有效的.
CREATE TABLE test_table(
k INTEGER,
v INTEGER
);
INSERT INTO test_table( k, v ) VALUES( 4, 5 );
SELECT * FROM(
SELECT * FROM(
SELECT k, v FROM test_table WHERE 1 = 0
)
UNION ALL
SELECT * FROM(
SELECT rowid, k, v FROM test_table
)
)
Run Code Online (Sandbox Code Playgroud)
我认为联合两个具有不同列数的选择将返回错误.如果我移除最外层,SELECT *那么我会收到我期待的错误:SELECTs to the left and right of UNION ALL do not have the same number of result columns.