MySQL (и SQLite в этом отношении) не требуют, чтобы вы указывали каждый столбец в предложении GROUP BY
, который не включен в агрегатные функции (IE: MIN, MAX, COUNT, SUM и т. Д.). Это по проекту , а также спецификация ANSI. Однако это означает, что значения для этих столбцов будут произвольными - их нельзя гарантировать каждый раз при выполнении запроса.
PostgreSQL / Oracle / SQL Server требует, чтобы вы указали каждый столбец, не заключенный в агрегатные функции в группе, или переписали запрос, чтобы он не был необходим. Использование:
SELECT u.*
FROM USERS u
WHERE EXISTS (SELECT NULL
FROM FAVORITES f
WHERE f.user_id = u.id
AND f.favoritable_id = 1)
AND u.id != 2
ORDER BY RANDOM()
LIMIT 5