Существуют некоторые причины производительности разделить вниз using
операторы:
Однако примечание, всеми этими причинами является конкретное время компиляции. Компилятор разделяет неиспользованный using
с автоматически.
Вы можете использовать подзапрос ...
WHERE t1.field3 = (SELECT MAX(st1.field3) FROM table1 AS st1)
Но на самом деле я бы переместил это из предложения where в оператор соединения в качестве AND для предложения ON.
Как вы заметили, предложение WHERE
не позволяет вам использовать в нем агрегаты. Это то, для чего предназначено предложение HAVING
.
HAVING t1.field3=MAX(t1.field3)
SELECT rest.field1
FROM mastertable as m
INNER JOIN table1 at t1 on t1.field1 = m.field
INNER JOIN table2 at t2 on t2.field = t1.field
WHERE t1.field3 = (SELECT MAX(field3) FROM table1)