Ce face UNION
UNION lipește rândurile din mai multe interogări într-un singur rezultat. Interogările trebuie să aibă același număr de coloane, în aceeași ordine. Numele coloanelor sunt luate din primul SELECT.
UNION elimină rândurile duplicate. UNION ALL le păstrează și este mai rapid, pentru că nu caută duplicate.
Exemple
Exemplul 1: Toate adresele de e-mail din două tabele
CREATE TABLE clienti (email VARCHAR(100));
CREATE TABLE abonati (email VARCHAR(100));
INSERT INTO clienti VALUES ('ana@exemplu.ro'), ('dan@exemplu.ro');
INSERT INTO abonati VALUES ('dan@exemplu.ro'), ('ioana@exemplu.ro');
SELECT email FROM clienti
UNION
SELECT email FROM abonati
ORDER BY email;
SELECT email FROM clienti
UNION ALL
SELECT email FROM abonati
ORDER BY email;
Rezultat
+------------------+
| email |
+------------------+
| ana@exemplu.ro |
| dan@exemplu.ro |
| ioana@exemplu.ro |
+------------------+
+------------------+
| email |
+------------------+
| ana@exemplu.ro |
| dan@exemplu.ro |
| dan@exemplu.ro |
| ioana@exemplu.ro |
+------------------+
Greșeli frecvente
- Interogările au număr diferit de coloane și primești eroarea
The used SELECT statements have a different number of columns. - Folosești
UNIONcând știi că nu există duplicate.UNION ALLface aceeași treabă mai repede.
Comenzi înrudite
SELECT: Citește date dintr-un tabel. Este comanda SQL folosită cel mai des.DISTINCT: Elimină rândurile duplicate din rezultat.INNER JOIN: Combină rândurile din două tabele care au o valoare comună, de exemplu comenzile cu clienții lor.