sql >> Databáze >  >> RDS >> SQLite

Oprava chyby:„SELECTy nalevo a napravo od UNION nemají stejný počet sloupců výsledků“ v SQLite

Pokud se vám při pokusu o použití UNION zobrazuje „Chyba:připravuje se, SELECTy nalevo a napravo od UNION nemají stejný počet sloupců výsledků…“ operátor v SQLite, je to proto, že jeden z SELECT příkazy vrací více sloupců než ostatní.

Když použijete UNION operátor, oba SELECT příkazy musí vrátit stejný počet sloupců.

Chcete-li tento problém vyřešit, zkontrolujte SELECT příkazy vrátí stejný počet sloupců.

Příklad chyby

Zde je příklad kódu SQL, který způsobuje chybu:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; 

Výsledek:

Chyba:v přípravě nemají SELECT vlevo a vpravo od UNION stejný počet sloupců výsledků (1)

Zde je první SELECT příkaz vrátí jeden sloupec (TeacherName ), ale druhý SELECT příkaz vrátí dva sloupce (StudentId a StudentName ).

Řešení

Způsob, jak tento problém vyřešit, je zajistit obě možnosti SELECT příkazy vrátí stejný počet sloupců

Takže pomocí výše uvedeného příkladu můžeme buď odstranit nadbytečný sloupec z našeho druhého SELECT prohlášení:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students; 

Výsledek:

Jméno učitele-----------Ben Bill Cathy Ein Faye Jet Spike Warren 

Nebo můžeme přidat další sloupec do prvního SELECT prohlášení:

SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; 

Výsledek:

Id učitele Jméno učitele--------- -----------1 Faye 1 Warren 2 Ben 2 Jet 3 Cathy 3 Spike 4 Cathy 4 Ein 5 Bill 5 Warren 6 Bill 

Mějte na paměti, že můžete získat různé výsledky v závislosti na tom, kterou možnost zvolíte. Důvodem je UNION ve výchozím nastavení vrací odlišné řádky. Když přidáme další sloupec, existuje možnost, že z dříve duplicitního řádku se nyní stane jedinečný řádek v závislosti na hodnotě ve sloupci navíc.

Můžeme také použít UNION ALL , který vrací duplicitní hodnoty:

SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students; 

Výsledek:

Id učitele Jméno učitele--------- -----------1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill  
  1. Jak vypustit tabulku v SQL

  2. Pgbackrest Restore and Restore Delta

  3. Co je DBMS? – Komplexní průvodce systémy správy databází

  4. Vygenerujte n řádků NULL v PostgreSQL