Condividi tramite


Linee guida per l'utilizzo dell'operatore UNION

Quando si utilizza l'operatore UNION, attenersi alle seguenti linee guida:

  • Tutti gli elenchi di selezione delle istruzioni combinate tramite l'operatore UNION devono includere lo stesso numero di espressioni (nomi di colonne, espressioni aritmetiche, funzioni di aggregazione e così via).

  • Le colonne corrispondenti dei set di risultati combinati tramite l'operatore UNION, o gli eventuali subset di colonne utilizzati nelle singole query, devono essere dello stesso tipo di dati, consentire la conversione implicita tra i due tipi di dati oppure includere un meccanismo di conversione esplicita. Un operatore UNION per la combinazione, ad esempio, di una colonna con tipo di dati datetime a una con tipo di dati binary non funzionerà a meno che non sia consentita una conversione esplicita. Un operatore UNION, tuttavia, funzionerà per la combinazione tra una colonna con tipo di dati money e una con tipo di dati int, in quanto questi tipi di dati possono essere convertiti in modo implicito.
    Le colonne con tipo di dati xml devono coincidere. Per tutte le colonne è necessario eseguire la tipizzazione in uno schema XML oppure annullare la tipizzazione. Nel primo caso, le colonne devono essere tipizzate nello stesso insieme di schemi XML.

  • Le colonne corrispondenti dei set di risultati delle singole istruzioni combinate tramite l'operatore UNION devono essere disposte nello stesso ordine. L'operatore UNION confronta infatti le colonne una a una nell'ordine specificato nelle singole query.
    Esempio:

    TABLE3

     

     

    TABLE4

     

    A

    B

    C

    A

    B

    INT

    CHAR(4)

    CHAR(4)

    CHAR(4)

    FLOAT

    ---

    -------

    -------

    -------

    -------

    1

    ABC

    JKL

    JKL

    1.000

    2

    DEF

    MNO

    MNO

    5.000

    3

    GHI

    PQR

     

     

    Eseguire la query seguente:

    SELECT a, b FROM table3UNION SELECT b, a FROM table4
    

    Set di risultati:

    a          b--------   -----1.000000   abc2.000000   def3.000000   ghi1.000000   jkl5.000000   mno
    

    Quando in un'operazione UNION vengono combinati tipi di dati diversi, questi vengono convertiti in base alle regole di precedenza dei tipi di dati. Nell'esempio precedente i valori di tipo int vengono convertiti in valori di tipo float, in quanto il tipo di dati float è prioritario rispetto a int. Per ulteriori informazioni, vedere Precedenza dei tipi di dati (Transact-SQL).
    La query seguente genera un messaggio di errore, in quanto i tipi di dati delle colonne corrispondenti non sono compatibili:

    SELECT b, c FROM table3UNION SELECT a, b FROM table4
    
  • I nomi delle colonne della tabella risultante dall'operazione UNION vengono ricavati dalla prima query dell'istruzione UNION. Se si desidera fare riferimento a una colonna del set di risultati in base a un nome diverso, ad esempio in una clausola ORDER BY, è necessario specificare la colonna con il nome desiderato nella prima istruzione SELECT:

    SELECT city AS Cities FROM stores_westUNION SELECT city FROM stores_eastORDER BY city
    

Vedere anche

Concetti

Combinazione dei set di risultati con l'operatore UNION
Utilizzo degli operatori UNION, EXCEPT e INTERSECT con altre istruzioni Transact-SQL

Altre risorse

UNION (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005