Ho incontrato un caso in cui una query sqlite che mi aspetto di restituire un errore è effettivamente valida e mi chiedevo se qualcuno potesse indicare perché questa query è valida .unione tutte con query con un diverso numero di colonne
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
)
)
penserei che unioning due selezionano che hanno un diverso numero di colonne restituirebbe un errore. Se rimuovo il più esterno SELECT *
, ricevo l'errore che mi aspetto: SELECTs to the left and right of UNION ALL do not have the same number of result columns
.
Sembra una stranezza nel SQLite! – Andomar
Strano - e cosa restituisce? NULL per la colonna mancante? –
Oh ho controllato la demo e omette la colonna. –