кодесурса
«SQLite

SQLite UNION

script1adsense2code
script1adsense3code

Описание

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

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

Синтаксис:

 ВЫБРАТЬ ...
СОЮЗ [ВСЕ | DISTINCT] ВЫБРАТЬ ...
[СОЮЗ [ВСЕ | DISTINCT] ВЫБРАТЬ ...]

Наглядная презентация оператора UNION

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

«SQLite

Образцы таблиц

сотрудники:


job_history:


Пример:

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

Select employee_id, job_id
FROM employees
UNION
Select employee_id,job_id
FROM job_history;

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

 employee_id job_id
----------- ----------
100 AD_PRES
101 AC_ACCOUNT
101 AC_MGR
101 AD_VP
102 AD_VP
102 IT_PROG
103 IT_PROG
104 IT_PROG
105 IT_PROG
106 IT_PROG
107 IT_PROG
108 FI_MGR
109 FI_ACCOUNT
110 FI_ACCOUNT
111 FI_ACCOUNT
112 FI_ACCOUNT
113 FI_ACCOUNT
114 PU_MAN
114 ST_CLERK
115 PU_CLERK
116 PU_CLERK
117 PU_CLERK
118 PU_CLERK
119 PU_CLERK
120 ST_MAN
121 ST_MAN
122 ST_CLERK
122 ST_MAN
123 ST_MAN
124 ST_MAN
125 ST_CLERK
126 ST_CLERK
127 ST_CLERK
128 ST_CLERK
129 ST_CLERK
130 ST_CLERK
131 ST_CLERK
132 ST_CLERK
133 ST_CLERK
134 ST_CLERK
135 ST_CLERK
136 ST_CLERK
137 ST_CLERK
138 ST_CLERK
139 ST_CLERK
140 ST_CLERK
141 ST_CLERK
142 ST_CLERK
143 ST_CLERK
144 ST_CLERK
145 SA_MAN
146 SA_MAN
147 SA_MAN
148 SA_MAN
149 SA_MAN
150 SA_REP
151 SA_REP
152 SA_REP
153 SA_REP
154 SA_REP
155 SA_REP
156 SA_REP
157 SA_REP
158 SA_REP
159 SA_REP
160 SA_REP
161 SA_REP
162 SA_REP
163 SA_REP
164 SA_REP
165 SA_REP
166 SA_REP
167 SA_REP
168 SA_REP
169 SA_REP
170 SA_REP
171 SA_REP
172 SA_REP
173 SA_REP
174 SA_REP
175 SA_REP
176 SA_MAN
176 SA_REP
177 SA_REP
178 SA_REP
179 SA_REP
180 SH_CLERK
181 SH_CLERK
182 SH_CLERK
183 SH_CLERK
184 SH_CLERK
185 SH_CLERK
186 SH_CLERK
187 SH_CLERK
188 SH_CLERK
189 SH_CLERK
190 SH_CLERK
191 SH_CLERK
192 SH_CLERK
193 SH_CLERK
194 SH_CLERK
195 SH_CLERK
196 SH_CLERK
197 SH_CLERK
198 SH_CLERK
199 SH_CLERK
200 AC_ACCOUNT
200 AD_ASST
201 MK_MAN
201 MK_REP
202 MK_REP
203 HR_REP
204 PR_REP
205 AC_MGR
206 AC_ACCOUNT

Наглядное представление результатов

«SQLite

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

SQLite UNION ALL

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

Иллюстрированная презентация оператора UNION ALL

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

«SQLite

SQLite UNION против UNION ALL

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

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

Пример:

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

Select employee_id, job_id,department_id
FROM employees
UNION ALL
Select employee_id,job_id,department_id
FROM job_history;

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

 идентификатор сотрудника
----------- ---------- -------------
100 AD_PRES 90
101 AD_VP 90
102 AD_VP 90
103 IT_PROG 60
104 IT_PROG 60
105 IT_PROG 60
106 IT_PROG 60
107 IT_PROG 60
108 FI_MGR 100
109 FI_ACCOUNT 100
110 FI_ACCOUNT 100
111 FI_ACCOUNT 100
112 FI_ACCOUNT 100
113 FI_ACCOUNT 100
114 PU_MAN 30
115 PU_CLERK 30
116 PU_CLERK 30
117 PU_CLERK 30
118 PU_CLERK 30
119 PU_CLERK 30
120 ST_MAN 50
121 ST_MAN 50
122 ST_MAN 50
123 ST_MAN 50
124 ST_MAN 50
125 ST_CLERK 50
126 ST_CLERK 50
127 ST_CLERK 50
128 ST_CLERK 50
129 ST_CLERK 50
130 ST_CLERK 50
131 ST_CLERK 50
132 ST_CLERK 50
133 ST_CLERK 50
134 ST_CLERK 50
135 ST_CLERK 50
136 ST_CLERK 50
137 ST_CLERK 50
138 ST_CLERK 50
139 ST_CLERK 50
140 ST_CLERK 50
141 ST_CLERK 50
142 ST_CLERK 50
143 ST_CLERK 50
144 ST_CLERK 50
145 SA_MAN 80
146 SA_MAN 80
147 SA_MAN 80
148 SA_MAN 80
149 SA_MAN 80
150 SA_REP 80
151 SA_REP 80
152 SA_REP 80
153 SA_REP 80
154 SA_REP 80
155 SA_REP 80
156 SA_REP 80
157 SA_REP 80
158 SA_REP 80
159 SA_REP 80
160 SA_REP 80
161 SA_REP 80
162 SA_REP 80
163 SA_REP 80
164 SA_REP 80
165 SA_REP 80
166 SA_REP 80
167 SA_REP 80
168 SA_REP 80
169 SA_REP 80
170 SA_REP 80
171 SA_REP 80
172 SA_REP 80
173 SA_REP 80
174 SA_REP 80
175 SA_REP 80
176 SA_REP 80
177 SA_REP 80
178 SA_REP
179 SA_REP 80
180 SH_CLERK 50
181 SH_CLERK 50
182 SH_CLERK 50
183 SH_CLERK 50
184 SH_CLERK 50
185 SH_CLERK 50
186 SH_CLERK 50
187 SH_CLERK 50
188 SH_CLERK 50
189 SH_CLERK 50
190 SH_CLERK 50
191 SH_CLERK 50
192 SH_CLERK 50
193 SH_CLERK 50
194 SH_CLERK 50
195 SH_CLERK 50
196 SH_CLERK 50
197 SH_CLERK 50
198 SH_CLERK 50
199 SH_CLERK 50
200 AD_ASST 10
201 MK_MAN 20
202 MK_REP 20
203 HR_REP 40
204 PR_REP 70
205 AC_MGR 110
206 AC_ACCOUNT 110
102 IT_PROG 60
101 AC_ACCOUNT 110
101 AC_MGR 110
201 MK_REP 20
114 ST_CLERK 50
122 ST_CLERK 50
200 AD_ASST 90
176 SA_REP 80
176 SA_MAN 80
200 AC_ACCOUNT 90

Наглядное представление результатов

«SQLite

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

SQLite UNIST DISTINCT

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

Пример:

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

SELECT DISTINCT employee_id, job_id
FROM employees
UNION
SELECT DISTINCT employee_id,job_id
FROM job_history;

Выход:

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

SQLite UNION ЗАКАЗАТЬ

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

Пример:

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

SELECT  employee_id, job_id
FROM employees
UNION
SELECT  employee_id,job_id
FROM job_history
ORDER BY employee_id;

Выход:

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

 employee_id job_id
----------- ----------
100 AD_PRES
101 AC_ACCOUNT
101 AC_MGR
101 AD_VP
102 AD_VP
102 IT_PROG
103 IT_PROG
104 IT_PROG
105 IT_PROG
106 IT_PROG
107 IT_PROG
108 FI_MGR
109 FI_ACCOUNT
110 FI_ACCOUNT
111 FI_ACCOUNT
112 FI_ACCOUNT
113 FI_ACCOUNT
114 PU_MAN
114 ST_CLERK
115 PU_CLERK
116 PU_CLERK
117 PU_CLERK
118 PU_CLERK
119 PU_CLERK
120 ST_MAN
121 ST_MAN
122 ST_CLERK
122 ST_MAN
123 ST_MAN
124 ST_MAN
125 ST_CLERK
126 ST_CLERK
127 ST_CLERK
128 ST_CLERK
129 ST_CLERK
130 ST_CLERK
131 ST_CLERK
132 ST_CLERK
133 ST_CLERK
134 ST_CLERK
135 ST_CLERK
136 ST_CLERK
137 ST_CLERK
138 ST_CLERK
139 ST_CLERK
140 ST_CLERK
141 ST_CLERK
142 ST_CLERK
143 ST_CLERK
144 ST_CLERK
145 SA_MAN
146 SA_MAN
147 SA_MAN
148 SA_MAN
149 SA_MAN
150 SA_REP
151 SA_REP
152 SA_REP
153 SA_REP
154 SA_REP
155 SA_REP
156 SA_REP
157 SA_REP
158 SA_REP
159 SA_REP
160 SA_REP
161 SA_REP
162 SA_REP
163 SA_REP
164 SA_REP
165 SA_REP
166 SA_REP
167 SA_REP
168 SA_REP
169 SA_REP
170 SA_REP
171 SA_REP
172 SA_REP
173 SA_REP
174 SA_REP
175 SA_REP
176 SA_MAN
176 SA_REP
177 SA_REP
178 SA_REP
179 SA_REP
180 SH_CLERK
181 SH_CLERK
182 SH_CLERK
183 SH_CLERK
184 SH_CLERK
185 SH_CLERK
186 SH_CLERK
187 SH_CLERK
188 SH_CLERK
189 SH_CLERK
190 SH_CLERK
191 SH_CLERK
192 SH_CLERK
193 SH_CLERK
194 SH_CLERK
195 SH_CLERK
196 SH_CLERK
197 SH_CLERK
198 SH_CLERK
199 SH_CLERK
200 AC_ACCOUNT
200 AD_ASST
201 MK_MAN
201 MK_REP
202 MK_REP
203 HR_REP
204 PR_REP
205 AC_MGR
206 AC_ACCOUNT

Предыдущая: Удалить
Далее: сортировка последовательностей

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code