logo

Разлика между Union и Union All

UNION и UNION ALL са двата най-важни SQL оператора, използвани в базата данни за комбиниране на резултатния набор от множество таблици. Тези оператори ни позволяват да използваме множество заявки SELECT, да извличаме желаните резултати и след това да ги комбинираме в краен изход . В тази статия ще видим как се различават един от друг. Преди да направим сравнение, ще обсъдим накратко тези оператори.

Какво е оператор на Съюза?

Операторът Union в MySQL ни позволява да комбинираме два или повече резултата от множество SELECT заявки в един резултатен набор. Има функция по подразбиране за премахнете дублиращите се редове от масите. Синтаксисът на този оператор винаги използва името на колоната в първия оператор SELECT като имена на колони на изхода.

MySQL Съюзът трябва да спазва следните основни правила:

  • Броят и редът на колоните трябва да са еднакви във всички заявки.
  • Позицията на съответните колони на всяка заявка за избор трябва да има съвместим тип данни.
  • Името на колоната, избрано в различните заявки SELECT, трябва да бъде в същия ред.
  • Името на колоната на първата заявка SELECT ще бъде имената на колоните на изхода.

ЗАБЕЛЕЖКА: Трябва да знаем, че Union и Join са различни.

  1. JOIN комбинира данни от множество различни таблици, докато UNION комбинира данни от множество подобни таблици.
  2. JOIN добавя изхода хоризонтално, докато UNION комбинира резултата вертикално.

Визуалното представяне по-долу го обяснява по-ясно:

Съюз срещу Съюз всички

За да прочетете повече информация за съюзния оператор, щракнете тук.

Какво е Union All?

Операторът UNION ALL комбинира два или повече резултата от множество SELECT заявки и връща всички записи в един резултатен набор. Той не премахва дублиращите се редове от изхода на изразите SELECT.

Можем да го разберем със следното визуално представяне.

Съюз срещу Съюз всички

Union срещу Union All Operator

Следващата таблица за сравнение обяснява основните им разлики по бърз начин:

СЪЮЗ СЪЮЗ ВСИЧКИ
Той комбинира набора от резултати от множество таблици и връща отделни записи в единичен набор от резултати. Той комбинира набора от резултати от множество таблици и връща всички записи в единичен набор от резултати.
Следното е основното синтаксис на оператор UNION:
ИЗБЕРЕТЕ списък_колони ОТ table1
СЪЮЗ
SELECT column_list FROM table2;
Следното е основното синтаксис на оператор UNION ALL:
ИЗБЕРЕТЕ списък_колони ОТ table1
СЪЮЗ ВСИЧКИ
SELECT column_list FROM table2;
Има функция по подразбиране за премахване на дублиращите се редове от изхода. Той няма функция за елиминиране на дублиращите се редове от изхода.
Това е изпълнението е бавно защото отнема време за намиране и след това премахване на дублиращи се записи. Това е изпълнението е бързо защото не елиминира дублиращите се редове.
Повечето потребители на бази данни предпочитат да използват този оператор. Повечето потребители на бази данни не предпочитат да използват този оператор.

Пример за съюз и съюз за всички

Нека разберем разликите между операторите Union и Union All чрез пример. Да предположим, че имаме таблица с име ' Студент ' и ' Студент2 “, който съдържа следните данни:

Маса: Ученик

Съюз срещу Съюз всички

Таблица: Студент2

Съюз срещу Съюз всички

Следващият SQL оператор връща ясно име на градовете от двете таблици с помощта на заявката UNION:

 SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City; 

След като изпълним горния оператор, ще получим изхода по-долу, тъй като операторът Union връща само отделните стойности.

Съюз срещу Съюз всички

Следващият SQL оператор се връща всички имена на градове, включително дубликати от двете таблици с помощта на заявката UNION ALL:

 SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City; 

След като изпълним горния оператор, ще получим изхода по-долу, тъй като операторът Union All връща цели записи, без да елиминира различни стойности.

Съюз срещу Съюз всички