В стандартном SQL вы можете использовать либо USING, либо ON, но не оба одновременно. Если бы вы могли использовать оба, вы бы пропустили AND из вашего примера.
Комментарий PMV (точнее, вопрос - см. Также ответ автора):
Моя проблема в том, что у меня есть куча таблиц, все с соединениями USING. Если я пытаюсь добавить таблицу с разными именами ключей, я получаю неоднозначную ошибку столбца. Есть ли изящный способ сделать это без преобразования всех моих объединений в ON объединение?
Что ж, лучший способ ограничить ущерб, нанесенный печально неправильно названными столбцами, - это, вероятно, (и примерно - я не отлаживал SQL ниже):
SELECT *
FROM (SELECT *
FROM Tbl1
JOIN Tbl2 USING (col1, col2, col3, col4)
JOIN Tbl3 USING (col2, col4, col6, col23)
JOIN Tbl4 USING (col2, col8, col3, col23)
) AS SystematicNaming
JOIN Tbl5
ON SystematicNaming.Col1 = Tbl5.Col1
AND SystematicNaming.ColA = Tbl5.PoorlyNamedColA
AND SystematicNaming.ColB = Tbl5.PoorlyNamedColB
Это сохраняет удобную и систематическую нотацию USING как можно дольше, в то же время управляя объединением с Tbl5 так, как оно должно управляться с учетом неоднородных имен столбцов, необходимых для объединения с Tbl5.
Я не уверен, что это лучший макет запроса, хотя я думаю, что это разумно.