我遇到了一個案例,我期望返回一個錯誤的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
)
)
我認爲unioning 2箇中選擇具有不同的列數將返回一個錯誤。如果我刪除最外層的SELECT *
,則會收到我期待的錯誤:SELECTs to the left and right of UNION ALL do not have the same number of result columns
。
看起來像SQLite的一個怪癖! – Andomar 2012-07-28 20:37:39
奇怪 - 它返回什麼?缺少列的空值? – 2012-07-28 20:41:53
哦,我檢查了演示,它省略了列。 – 2012-07-28 20:42:47