Combinați rândurile tabelelor folosind UNION


combinați rândurile tabelelor folosind UNION

În această lecție vom vorbi despre clauza UNION. Puteți utiliza clauza UNION pentru a combina rândurile tabelelor din două interogări diferite într-un singur rezultat. Spre deosebire de un join, care combină coloane din diferite tabele, o uniune combină rânduri din diferite tabele. Aici este o ilustrare a ceea ce o uniune arata ca

Sindicatele

toate exemplele pentru această lecție se bazează pe Microsoft SQL Server Management Studio și AdventureWorks2012 baza de date., Puteți începe să utilizați aceste instrumente gratuite folosind ghidul meu Noțiuni de bază folosind SQL Server.

În SQL această declarație se pare că

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

pentru a uniunea două tabele există o serie de cerințe:

  1. numărul de coloane trebuie să fie aceeași pentru ambele selectați declarații.
  2. coloanele, în ordine, trebuie să fie de același tip de date.

când rândurile sunt combinate, rândurile duplicate sunt eliminate. Dacă doriți să păstrați toate rândurile din ambele rezultate selectați declarația lui utilizați cuvântul cheie ALL.,să presupunem că vi s-a cerut să furnizați o listă cu toate categoriile și subcategoriile de produse AdventureWorks2012. Pentru a face acest lucru ai putea scrie două întrebări și să ofere două rezultate, cum ar fi două foi de calcul, sau ai putea folosi UNIUNII clauză pentru a oferi un combinat rezultat:

SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S

La aceasta veți obține o listă combinată de nume, dar să presupunem că ai vrut să știi ce nume au fost categorii versus subcategorii., Pentru a face acest lucru, puteți adăuga o nouă coloană care indică tipul categoriei:

SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S

Union versus Union All

diferența dintre UNION și UNION ALL este că cu UNION returnează un set unic de rânduri din rezultatul Uniunii; întrucât, UNION ALL returnează fiecare rând.

exemplu:

SELECT person.Address.CityFROM person.Address

returnează 19614 rânduri.

SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address

returnează 575 de rânduri, care este numărul de nume de orașe distincte din tabel. Rularea Uniunii toate returnează întregul set de nume de oraș de două ori:

SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address

se returnează 39228 rânduri.,

după cum puteți vedea, există o mare diferență în ceea ce privește utilizarea calificativului ALL. Atunci când nu este utilizat, rezultatele sunt valori distincte. Duplicatele nu sunt eliminate numai între rânduri din fiecare rezultat, ci și din interior.să presupunem că managementul dorește o listă combinată de persoane, furnizori și nume de magazine identificate după sursă.pentru a face acest lucru, creăm trei interogări separate și apoi folosim clauza union pentru a le pune împreună. Vom comanda apoi lista.,

la prima vedere s-ar putea să credeți că clauza ORDER BY se va aplica numai ultimei instrucțiuni select, dar de fapt se aplică tuturor rezultatelor returnate de Uniune. Motorul bazei de date procesează mai întâi toate declarațiile Uniunii, apoi comanda.

Dacă aveți îndoieli cu privire la ordinea de procesare, puteți utiliza paranteza „()” pentru a controla ordinea de evaluare la fel ca tine poate cu expresii. Iată cum ar arăta afirmația, în general, cu paranteze:

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Sari la bara de unelte