MySQL                
            UNIE
        
        
            
    Zoeken…
Syntaxis
- UNION DISTINCT - dedups na het combineren van de SELECT's
 - UNION ALL - niet-dedup (sneller)
 - UNION - de standaardinstelling is DISTINCT
 -  SELECT ... UNION SELECT ... - is OK, maar dubbelzinnig bij 
ORDER BY - (SELECT ...) UNION (SELECT ...) ORDER BY ... - lost de dubbelzinnigheid op
 
Opmerkingen
UNION maakt geen gebruik van meerdere CPU's.
UNION heeft altijd * een tijdelijke tabel nodig om de resultaten te verzamelen. * Vanaf 5.7.3 / MariaDB 10.1 leveren sommige vormen van UNION de resultaten zonder een tmp-tabel (dus sneller).
SELECT-instructies combineren met UNION
 U kunt de resultaten van twee identiek gestructureerde zoekopdrachten combineren met het UNION trefwoord. 
 Als u bijvoorbeeld een lijst met alle contactinformatie uit twee afzonderlijke tabellen, authors en editors , wilt, kunt u het trefwoord UNION als volgt gebruiken: 
select name, email, phone_number 
from authors
union
select name, email, phone_number
from editors
  Het gebruik van union op zichzelf zal duplicaten verwijderen. Als u duplicaten in uw zoekopdracht wilt bewaren, kunt u het sleutelwoord ALL als volgt gebruiken: UNION ALL . 
BESTELLEN BIJ
Als u de resultaten van een UNION moet sorteren, gebruikt u dit patroon:
( SELECT ... )
UNION
( SELECT ... )
ORDER BY
 Zonder de haakjes zou de laatste ORDER BY tot de laatste SELECT behoren.
Paginering via OFFSET
Bij het toevoegen van een LIMIT aan een UNION is dit het patroon dat moet worden gebruikt:
( SELECT ... ORDER BY x  LIMIT 10 )
UNION
( SELECT ... ORDER BY x  LIMIT 10 )
ORDER BY x  LIMIT 10
  Omdat je niet kunt voorspellen uit welke SELECT ('s) de "10" zal komen, moet je van elk 10 halen en vervolgens de lijst verder afbouwen door zowel ORDER BY als LIMIT herhalen. 
Voor de 4e pagina van 10 items is dit patroon nodig:
( SELECT ... ORDER BY x  LIMIT 40 )
UNION
( SELECT ... ORDER BY x  LIMIT 40 )
ORDER BY x  LIMIT 30, 10
  Dat wil zeggen, verzamel 4 pagina's in elke SELECT en voer dan de OFFSET in de UNION . 
Gegevens combineren met verschillende kolommen
SELECT name, caption as title, year, pages FROM books 
UNION
SELECT name, title, year, 0 as pages FROM movies
 Wanneer u twee recordsets combineert met verschillende kolommen, emuleer dan de ontbrekende sets met standaardwaarden.
UNION ALL en UNION
SELECT 1,22,44 UNION SELECT 2,33,55
SELECT 1,22,44 UNION SELECT 2,33,55 UNION SELECT 2,33,55
Het resultaat is hetzelfde als hierboven.
gebruik UNION ALL
wanneer
SELECTEER 1,22,44 UNION SELECT 2,33,55 UNION ALL SELECTEER 2,33,55
Combineren en samenvoegen van gegevens op verschillende MySQL-tabellen met dezelfde kolommen in unieke rijen en lopende query
Deze UNION ALL combineert gegevens uit meerdere tabellen en dient als alias voor de tabelnaam om te gebruiken voor uw vragen:
SELECT YEAR(date_time_column), MONTH(date_time_column), MIN(DATE(date_time_column)), MAX(DATE(date_time_column)), COUNT(DISTINCT (ip)), COUNT(ip), (COUNT(ip) / COUNT(DISTINCT (ip))) AS Ratio
FROM (
    (SELECT date_time_column, ip FROM server_log_1 WHERE state = 'action' AND log_id = 150) UNION ALL
    (SELECT date_time_column, ip FROM server_log_2 WHERE state = 'action' AND log_id = 150) UNION ALL
    (SELECT date_time_column, ip FROM server_log_3 WHERE state = 'action' AND log_id = 150) UNION ALL
    (SELECT date_time_column, ip FROM server_log WHERE state = 'action' AND log_id = 150)
) AS table_all
GROUP BY YEAR(date_time_column), MONTH(date_time_column);
    
    
    
    
    
