SQLite СОЮЗ

Описание

В SQLite оператор UNION используется для объединения результатов нескольких операторов SELECT в один набор результатов.

Характеристика по умолчанию для UNION — удалить повторяющиеся строки из результата. Ключевое слово DISTINCT, которое является необязательным, не дает никакого эффекта, потому что по умолчанию оно определяет удаление повторяющихся строк. Но если мы используем необязательное ключевое слово ALL, удаление повторяющихся строк не произойдет, и набор результатов будет включать все совпадающие строки из всех операторов SELECT.

Синтаксис:

 ВЫБРАТЬ ... СОЕДИНЕНИЕ [ВСЕ |  ОТЛИЧИТЕЛЬНЫЙ] ВЫБРАТЬ ... [СОЕДИНЕНИЕ [ВСЕ |  DISTINCT] SELECT ...] 

Наглядное представление оператора UNION

Оператор UNION возвращает результат обоих запросов после удаления повторяющихся строк.

Примеры таблиц

история_работы:

Если мы хотим чтобы отобразить текущую и предыдущую информацию о заданиях всех сотрудников, когда можно будет использовать следующий оператор sqlite.

  Выбрать employee_id, job_idFROM employeeUNIONelect employee_id, job_idFROM job_history;  

Пример вывода:

 employee_id  job_id ----------- ---------- 100 AD_PRES101 AC_ACCOUNT101 AC_MGR101 AD_VP102 AD_VP102 IT_PROG103 IT_PROG104 IT_PROG105 IT_PROG106 IT_PROG107 IT_PROG108 FI_MGR109 FI_ACCOUNT110 FI_ACCOUNT111 FI_ACCOUNT112 FI_ACCOUNT113 FI_ACCOUNT114 PU_MAN114 ST_CLERK115 PU_CLERK116 PU_CLERK117 PU_CLERK118 PU_CLERK119 PU_CLERK120 ST_MAN121 ST_MAN122 ST_CLERK122  ST_MAN123 ST_MAN124 ST_MAN125 ST_CLERK126 ST_CLERK127 ST_CLERK128 ST_CLERK129 ST_CLERK130 ST_CLERK131 ST_CLERK132 ST_CLERK133 ST_CLERK134 ST_CLERK135 ST_CLERK136 ST_CLERK137 ST_CLERK138 ST_CLERK139 ST_CLERK140 ST_CLERK141 ST_CLERK142 ST_CLERK143 ST_CLERK144 ST_CLERK145 SA_MAN146 SA_MAN147 SA_MAN148 SA_MAN149 SA_MAN150 SA_REP151 SA_REP152 SA_REP153 SA_REP154 SA_REP155 SA_REP156 SA_REP157 SA_REP158 SA_REP159 SA_REP160 SA_REP161 SA_REP162 SA_REP163 SA_REP164 SA_REP165 SA_REP166 SA_REP167 SA_  REP168 SA_REP169 SA_REP170 SA_REP171 SA_REP172 SA_REP173 SA_REP174 SA_REP175 SA_REP176 SA_MAN176 SA_REP177 SA_REP178 SA_REP179 SA_REP180 SH_CLERK181 SH_CLERK182 SH_CLERK183 SH_CLERK184 SH_CLERK185 SH_CLERK186 SH_CLERK187 SH_CLERK188 SH_CLERK189 SH_CLERK190 SH_CLERK191 SH_CLERK192 SH_CLERK193 SH_CLERK194 SH_CLERK195 SH_CLERK196 SH_CLERK197 SH_CLERK198 SH_CLERK199 SH_CLERK200 AC_ACCOUNT200 AD_ASST201 MK_MAN201 MK_REP202 MK_REP203 HR_REP204 PR_REP205 AC_MGR206 AC_ACCOUNT 

Наглядное представление вывода

Здесь на приведенном выше рисунке показано, что только employee_id и job_id, окруженные красным прямоугольником, одинаковы для сотрудников и таблицы job_history, поэтому они появляются один раз в выводе, но другие employee_id и job_id разные в обеих таблицах, поэтому они приходят каждая.

SQLite UNION ALL

Оператор UNION ALL не удаляет дубликаты выбранных строк и возвращает все строки.

Наглядное представление оператора UNION ALL

Оператор UNION ALL возвращает все строки из обоих запросов, и исключения дублирования не происходит.

SQLite UNION vs UNION ALL

В SQLite оператор UNION возвращает объединенный результат из нескольких операторов SELECT в один набор результатов, но исключает повторяющиеся строки, тогда как оператор UNION ALL позволяет избежать исключения повторяющихся выбранных строк и возвращает все строки .

См. пример ниже.

Пример:

Если мы хотим отобразить текущую и предыдущую информацию о вакансиях всех сотрудников, и они могут появляться более одного раза, можно использовать следующий оператор sqlite.

  Выбрать employee_id, job_id, Department_idFROM employeeUNION ALL Выбрать employee_id, job_id, department_idFROM job_history;  

Пример вывода:

 employee_id job_id Department_id ----------- ---------- ------------- 100 AD_PRES 90101 AD_VP 90102 AD_VP 90103 IT_PROG 60104  IT_PROG 60105 IT_PROG 60106 IT_PROG 60107 IT_PROG 60108 FI_MGR 100109 FI_ACCOUNT 100110 FI_ACCOUNT 100111 FI_ACCOUNT 100112 FI_ACCOUNT 100113 FI_ACCOUNT 100114 PU_MAN 30115 PU_CLERK 30116 PU_CLERK 30117 PU_CLERK 30118 PU_CLERK 30119 PU_CLERK 30120 ST_MAN 50121 ST_MAN 50122 ST_MAN 50123 ST_MAN 50124 ST_MAN 50125 ST_CLERK 50126 ST_CLERK 50127 ST_CLERK 50128 ST_CLERK 50129  ST_CLERK 50130 ST_CLERK 50131 ST_CLERK 50132 ST_CLERK 50133 ST_CLERK 50134 ST_CLERK 50135 ST_CLERK 50136 ST_CLERK 50137 ST_CLERK 50138 ST_CLERK 50139 ST_CLERK 50140 ST_CLERK 50141 ST_CLERK 50142 ST_CLERK 50143 ST_CLERK 50144 ST_CLERK 50145 SA_MAN 80146 SA_MAN 80147 SA_MAN 80148 SA_MAN 80149 SA_MAN 80150 SA_REP 80151 SA_  REP 80152 SA_REP 80153 SA_REP 80154 SA_REP 80155 SA_REP 80156 SA_REP 80157 SA_REP 80158 SA_REP 80159 SA_REP 80160 SA_REP 80161 SA_REP 80162 SA_REP 80163 SA_REP 80164 SA_REP 80165 SA_REP 80166 SA_REP 80167 SA_REP 80168 SA_REP 80169 SA_REP 80170 SA_REP 80171 SA_REP 80172 SA_REP 80173 SA_REP 80174 SA_REP 80175 SA_REP 80176  SA_REP 80177 SA_REP 80178 SA_REP179 SA_REP 80180 SH_CLERK 50181 SH_CLERK 50182 SH_CLERK 50183 SH_CLERK 50184 SH_CLERK 50185 SH_CLERK 50186 SH_CLERK 50187 SH_CLERK 50188 SH_CLERK 50189 SH_CLERK 50190 SH_CLERK 50191 SH_CLERK 50192 SH_CLERK 50193 SH_CLERK 50194 SH_CLERK 50195 SH_CLERK 50196 SH_CLERK 50197 SH_CLERK 50198 SH_CLERK 50199 SH_CLERK 50200 AD_ASST 10201 MK_MAN  20202 MK_REP 20203 HR_REP 40204 PR_REP 70205 AC_MGR 110206 AC_ACCOUNT 110102 IT_PROG 60101 AC_ACCOUNT 110101 AC_MGR 110201 MK_REP 20114 ST_CLERK 50122 ST_CLERK 50200 AD_ASST 90176 Выходной сигнал SA_REPAN 80176> SA_MGR> Выходной файл SA_REPAN 80176   p>   

Здесь на приведенном выше рисунке показано, что только employee_id и job_id, окруженные красным прямоугольником, одинаковы для сотрудников и таблицы job_history, и все они появились в наборе результатов. Здесь UNION ALL нужно избегать исключения повторяющихся строк.

SQLite UNION DISTINCT

Предложение DISTINCT с UNION не дало ничего лишнего, в отличие от простого UNION. Из оператора UNION мы знаем, что все строки будут отображаться из обоих запросов, за исключением того, что дубликат - один раз.

Пример:

Если мы хотим отобразить текущую и предыдущую информацию о вакансиях всех сотрудников, можно использовать следующий оператор sqlite.

  SELECT DISTINCT employee_id, job_idFROM employeeUNIONSELECT DISTINCT employee_id, job_idFROM job_history;  

Вывод:

Результат будет таким же, как у оператора UNION..

SQLite UNION ORDER BY

Предложение ORDER BY с UNION упорядочивает строки в наборе результатов в определенном порядке. Порядок по умолчанию - по возрастанию. ORDER BY используется только в самом конце оператора.

Если мы хотим отобразить текущие и предыдущие сведения о вакансиях всех сотрудников, как только следующий оператор sqlite сможет использоваться.

  SELECT employee_id, job_idFROM employeeUNIONSELECT employee_id, job_idFROM job_historyORDER BY employee_id;  

Вывод:

Результат будет таким же, как у оператора UNION.

 employee_id job_id ----------- ---------- 100 AD_PRES101 AC_ACCOUNT101 AC_MGR101 AD_VP102 AD_VP102 IT_PROG103 IT_PROG104 IT_PROG105 IT_PROG106 IT_PROG107 IT_PROG105 IT_PROG106 IT_PROG107 IT_PROG108_MGRCOUNTCOUNT FIACUNT_MGR109111_AC  PU_MAN114 ST_CLERK115 PU_CLERK116 PU_CLERK117 PU_CLERK118 PU_CLERK119 PU_CLERK120 ST_MAN121 ST_MAN122 ST_CLERK122 ST_MAN123 ST_MAN124 ST_MAN125 ST_CLERK126 ST_CLERK127 ST_CLERK128 ST_CLERK129 ST_CLERK130 ST_CLERK131 ST_CLERK132 ST_CLERK133 ST_CLERK134 ST_CLERK135 ST_CLERK136 ST_CLERK137 ST_CLERK138 ST_CLERK139 ST_CLERK140 ST_CLERK141 ST_CLERK142 ST_CLERK143 ST_CLERK144 ST_CLERK145 SA_MAN146 SA_MAN147 SA_MAN148 SA_MAN149 SA_MAN150 SA_REP151 SA_REP152 SA_REP153 SA_REP154 SA_REP155 SA_REP156 SA_REP157 SA_REP158 SA_REP159 SA_REP160 SA_REP161 SA_REP162  SA_REP163 SA_REP164 SA_REP165 SA_REP166 SA_REP167 SA_REP168 SA_REP169 SA_REP170 SA_REP171 SA_REP172 SA_REP173 SA_REP174 SA_REP175 SA_REP176 SA_MAN176_ SA_REP177 SA_REP178 SA_REP176_ SA_REP177  _CLERK181 SH_CLERK182 SH_CLERK183 SH_CLERK184 SH_CLERK185 SH_CLERK186 SH_CLERK187 SH_CLERK188 SH_CLERK189 SH_CLERK190 SH_CLERK191 SH_CLERK192 SH_CLERK193 SH_CLERK194 SH_CLERK195 SH_CLERK196 SH_CLERK197 SH_CLERK198 SH_CLERK199 SH_CLERK200 AC_ACCOUNT200 AD_ASST201 MK_MAN201 MK_REP202 MK_REP203 HR_REP204 PR_REP205 AC_MGR206 AC_ACCOUNT 

Оцените статью
nanomode.ru
Добавить комментарий