SQLite UNION
Описание
В SQLite оператор UNION используется для объединения результата нескольких операторов SELECT в один набор результатов.
Характеристика по умолчанию для UNION - удалить дублирующиеся строки из результата. Ключевое слово DISTINCT, которое является необязательным, не оказывает никакого влияния, поскольку по умолчанию оно определяет удаление дублирующихся строк. Но если мы используем необязательное ключевое слово ALL, удаление дублирующихся строк не происходит, и результирующий набор включает все соответствующие строки из всех операторов SELECT.
Синтаксис:
ВЫБРАТЬ ... СОЮЗ [ВСЕ | DISTINCT] ВЫБРАТЬ ... [СОЮЗ [ВСЕ | DISTINCT] ВЫБРАТЬ ...]
Наглядная презентация оператора UNION
Оператор UNION возвращает результат обоих запросов после удаления повторяющихся строк.
Образцы таблиц
сотрудники:
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
Наглядное представление результатов
Здесь на рисунке выше показано, что только сотрудники employee_id и job_id, окруженные красным прямоугольником, одинаковы в таблице employee и job_history, поэтому в выходных данных они встречаются один раз, а другие employee_id и job_id различны в обеих таблицах, поэтому они встречаются в каждой.
SQLite UNION ALL
Оператор UNION ALL не удаляет дубликаты выбранных строк и возвращает все строки.
Иллюстрированная презентация оператора UNION ALL
Оператор UNION ALL возвращает все строки обоих запросов, и устранение дублирования не происходит.
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
Наглядное представление результатов
Здесь на рисунке выше показано, что только 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 программирования