TGViewer
SQL Portal | Базы Данных SQL Portal | Базы Данных @sqlportal · 13.7K subscribers
Post #1851 1.29K
В SQL можно объединять таблицы по одинаковым именам колонок через:
t1 JOIN t2 USING (c1)


Но здесь есть неприятная ловушка
Такой запрос:
t1
JOIN t2 USING (c1)
JOIN t3 USING (c2)

будет работать, если c2 есть только в t2 и t3.

Проблемы начинаются позже.

Если в будущем кто-то добавит колонку c2 в t1, запрос внезапно перестанет работать или начнёт вести себя не так, как ожидалось.
Причина в том, что USING опирается на имена колонок, а не на явные ссылки на таблицы. Изменение схемы может неожиданно повлиять на уже существующие JOIN'ы.

Именно поэтому многие разработчики предпочитают более явный вариант:
t1
JOIN t2 ON t1.c1 = t2.c1
JOIN t3 ON t2.c2 = t3.c2


Кода чуть больше, зато зависимость от структуры таблиц становится очевидной и предсказуемой.
Лукас Эдер показывает этот кейс на простом примере и напоминает, что некоторые удобные сокращения в SQL могут обернуться проблемами спустя месяцы или годы.

https://blog.jooq.org/why-join-using-can-lead-to-errors-in-sql/

👉 @SQLPortal
Java, SQL and jOOQ. Avoiding SQL Ambiguities caused by JOIN USING and NATURAL JOIN Discover the pitfalls of using SQL's NATURAL JOIN and JOIN USING syntax. Learn best practices for joining tables in production queries.
  • ❤ 3
  • 👍 3
More from @sqlportal
  1. Oct 9, 2026Горизонтальные или вертикальные столбцы: что выбрать? Оба варианта помогают сравнивать кат…
  2. Oct 9, 2026Оконные функции SQL: аналитика без потери отдельных строк В отличие от GROUP BY, оконные ф…
  3. Oct 8, 2026DBcooper — лёгкий клиент для работы с базами данных Open-source-приложение на Tauri, Rust…
  4. Oct 8, 20265 групп реляционных СУБД, которые полезно знать • С открытым исходным кодом: PostgreSQL, M…
  5. Oct 7, 2026Разбираем SQL-запросы с помощью Python Какие таблицы и колонки использует запрос? Библиоте…
  6. Oct 7, 2026Линтер и автоформаттер для SQL Бесплатный инструмент с открытым исходным кодом, который пр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →