2015-02-05 5 views
3

У меня есть база данных MYSQL с несколькими таблицами, каждая из которых имеет одинаковую структуру. Я хочу найти все таблицы, чтобы найти строку с определенным значением для столбца. Должен ли я искать таблицы по одному или есть более простой способ?Поиск нескольких таблиц для одного и того же значения

ответ

4

легко сделать, и также протестировали В MySQL Workbench.

ВЫБРАТЬ ВСЕ:

SELECT * FROM table_one, table_two; 

выбрать одно значение из двух таблиц:

SELECT * FROM table_one, table_two WHERE field = 'some_val' 

выбрать несколько значений из двух таблиц:

SELECT * FROM table_one, table_two WHERE field = 'some_val' AND field2 = 'some_val' AND field3 = 'some_val' 
+1

Я думаю, что лучше использовать соединение, так как отдельные таблицы по запятой это декартовое умножение, а union - нет, даже если вы используете объединение всех ... –

+0

мкм. Нет. Работает для меня. – technology101010

+0

@StephenCarr является правильным, единственное, что я, вероятно, по-другому, это назначить псевдонимы для каждой таблицы, таким образом, вы можете искать значения в столбцах с уникальным именем – Matth3w

1

Вы можете объединить все таблицы. Вы все еще должны пройти все таблицы, один на один, но в случае union вы не будете иметь декартово умножение, следовательно, лучшее из всего:

SELECT column FROM table1 WHERE column = 'value' 
UNION ALL 
SELECT column FROM table2 WHERE column = 'value' 
; 
Смежные вопросы