#mysql
#mysql
Вопрос:
в запросе MySQL, таком как
SELECT *
FROM (
SELECT user_id
FROM favorites
WHERE user_id >1
UNION SELECT user_id
FROM favorites
WHERE user_id <9
) AS derived
можно ли не использовать псевдонимы для таблиц избранного (например, «друзья КАК f1») Я заметил, что этот запрос работает так, как ожидалось (т. Е. Возвращает Все идентификаторы пользователя), но я не знаю, является ли это плохой практикой. Когда у меня есть несколько объединений, это сделало бы мои запросы менее запутанными, если бы мне не нужно было сохранять все псевдонимы прямыми. Существует ли хорошее общее правило, когда использовать псевдонимы (возможно, это «всегда использовать псевдонимы при использовании нескольких экземпляров одной и той же таблицы»)?
Ответ №1:
Вам не нужно указывать псевдоним внутри объединения. Каждая часть объединения по сути является собственным запросом.
Псевдоним нужен только в том случае, если вы дважды используете одну и ту же таблицу в запросе или если вы присоединяетесь к подзапросу, в противном случае в этом нет необходимости (если вы этого не хотите).
Вам также не нужна внешняя оболочка выбора, она не делает ничего полезного и может даже замедлить работу.
(Я предполагаю, что объединение — это просто пример — ваше предложение where может быть выполнено всего одним запросом, и вы, вероятно, захотите union all
.)