Вопрос про SQL в котором легко ошибиться

На собеседованиях любят задавать вопрос про разницу union и union all. Смысл операторов прост: union all - объединяет все строки обеих таблиц union - делает то же самое, но сохраняет только уникальные строки

Но можно легко ошибиться в вопросе, сколько минимум строк получится при объединении таблиц (в первой 10 строк, во второй 5). Интуитивно первым в голову приходит ответ 10, потому что во второй могут быть все строки совпадающие с первой. Но на самом деле правильный ответ - 1. union удаляет все дубли, полученные после объединения, а они могут быть и в первой таблице

И в конце пара хороших практик по работе с объединением: 1⃣ Если точно известно, что в таблицах нет дублей - используй union all. Потому что union вычислительно намного сложнее из-за вычисление уникальных записей 2⃣ При объединении запросов перечисляй колонки явно (а не select *) - так не придётся чинить запрос, каждый раз, когда кто-то поменял таблицу

repost

45

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь