У меня есть три таблицы: test1, test2, test3
test1 data
===========
id test_id q_id
1 25 2
2 27 2
test2 data
===========
id test_id q_id
1 25 2
2 34 2
test3 data
===========
id test_id q_id
1 34 2
как получить test_id
значение с q_id = 2
из этих трех таблиц без повторения данных?
что составляет 25, 27, 34
Если вы действительно не можете избавиться от двух из трех структурных идентичных таблиц, посмотрите на UNION. По умолчанию используется UNION DISTINCT, который удаляет дубликаты из результатов.
SELECT test_id FROM test1 WHERE q_id=2
UNION DISTINCT
SELECT test_id FROM test2 WHERE q_id=2
UNION DISTINCT
SELECT test_id FROM test3 WHERE q_id=2
@just somebody - ваш запрос делает 3 select *, который может быть интенсивным, лучше всего ограничить все три, чтобы избежать ненужного количества строк:
SELECT test_id, 'test1' AS tableName FROM test1 WHERE q_id = 2
UNION
SELECT test_id, 'test2' AS tableName FROM test2 WHERE q_id = 2
UNION
SELECT test_id, 'test3' AS tableName FROM test3 WHERE q_id = 2
Вышеупомянутый запрос был изменен, чтобы отобразить таблицу, из которой каждый q_id пришел.
SELECT test_id
FROM (
SELECT * FROM test1 UNION
SELECT * FROM test2 UNION
SELECT * FROM test3
) tests
WHERE q_id = 2
test
таблица с дополнительным столбцом для дифференциации между 3 прогонами теста?