Я столкнулся с тем случаем, когда запрос 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
)
)
Я бы подумал, что объединение двух выборок, которые имеют различное количество столбцов, вернет ошибку. Если я удалю внешний SELECT *
, тогда я получу ожидаемую ошибку: SELECTs to the left and right of UNION ALL do not have the same number of result columns
.