запрос выбора mysql

#mysql #select

#mysql #выберите

Вопрос:

Мой вопрос очень прост, но, похоже, я не могу найти здесь ответ.

Итак,

Все, что я хочу сделать, это выбрать из двух таблиц одновременно (с одинаковыми именами столбцов [id])

В настоящее время у меня есть

 "SELECT * FROM table1 WHERE id='$id_var'" 
  

но мне также нужно также проверить ‘table2’. Каков наилучший способ сделать это без создания второго запроса? Спасибо.

Шейн

Ответ №1:

   SELECT * FROM table1 WHERE id='$id_var'
  UNION ALL
  SELECT * FROM table2 WHERE id='$id_var'
  

Ответ №2:

 SELECT * FROM table1 WHERE id = '$id_var'
UNION ALL
SELECT * FROM table2 WHERE id = '$id_var'
  

Однако вопрос, который вы должны задать себе, заключается в том, почему у вас есть две таблицы с одинаковыми столбцами в первую очередь. Для меня это звучит как плохой дизайн базы данных.

Комментарии:

1. Спасибо за ваш ответ. Совпадают только имена столбцов, данные is — нет. На этот раз никакого плохого дизайна.

2. да, согласен, вы можете сохранить логический флаг в базе данных для разделения!

3. @shane: Это не обязательно означает, что это неплохой дизайн.

Ответ №3:

Вы также могли бы сделать это:

 SELECT table1.id, table1.x, table2.y 
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = $id;
  

Комментарии:

1. Операция очень неясна, но, похоже, ему может понадобиться ЛЕВОЕ СОЕДИНЕНИЕ или ВНУТРЕННЕЕ соединение.