Mysql Query сомнения - PullRequest
       10

Mysql Query сомнения

0 голосов
/ 02 декабря 2009

У меня есть три таблицы, а именно 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

Ответы [ 3 ]

2 голосов
/ 02 декабря 2009

Если вы действительно не можете избавиться от двух из трех идентичных структурных таблиц, взгляните на оператор 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   
1 голос
/ 02 декабря 2009

@ просто кто-нибудь - Ваш запрос выполняет 3 выбора *, которые могут быть интенсивными, лучше ограничить все три, чтобы избежать ненужного количества строк:

    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.

0 голосов
/ 02 декабря 2009
SELECT test_id
FROM (
    SELECT * FROM test1 UNION
    SELECT * FROM test2 UNION
    SELECT * FROM test3
) tests
WHERE q_id = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...