MYSQL - получить одинаковые значения из n запросов

399
26 января 2017, 02:34

Есть N таблиц, N запросов: SELECT id FROM table_a WHERE value = '123', SELECT id FROM table_b WHERE value = '456', SELECT id FROM table_c WHERE value = '789', SELECT id FROM table_d WHERE value = '101112', ... Необходимо получить одним запросом только те id, которые есть во всех результатах запросов

Если точнее - если сделать union этих запросов НО получить только повторяющиеся во всех запросах ID

Answer 1

Обычный [INNER] JOIN при объединении выборок из таблиц делает именно то, что вам требуется, в результаты попадают только те записи, которые по условиям объединения присутствуют во всех таблицах. Запрос может выглядеть так:

SELECT table_a.id
  FROM table_a
  JOIN table_b ON table_b.id=table_a.id
  JOIN table_c ON table_c.id=table_a.id
  ...
 WHERE table_a.value = '123' and table_b.value='456' and table_c.value='789'

Или, в краткой форме (помня, что оператор "запятая" с заданными условиями объединения в MySQL эквивалентен [INNER] JOIN:

SELECT table_a.id
  FROM table_a, table_b, table_c, ...
 WHERE table_b.id=table_a.id and table_c.id=table_a.id
   and table_a.value = '123' and table_b.value='456' and table_c.value='789'
READ ALSO
PyQt MySql driver not loaded

PyQt MySql driver not loaded

Использую PyQt v 54

502
Rollup для запроса с union

Rollup для запроса с union

Есть необходимость подсчитать сумму всех строкЗапрос с union, в данный момент я считаю итоги для каждого селекта

317
Каким образом передать данные формы с одного домена на другой?

Каким образом передать данные формы с одного домена на другой?

Добрый деньЕсть у меня значит сайт, на котором имеется форма метода POST

366