Есть 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
Обычный [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'
Продвижение своими сайтами как стратегия роста и независимости