SQL-запрос не показывает ожидаемый результат - PullRequest
0 голосов
/ 10 июля 2011

Итак, я создаю скрипт интеграции, но по какой-то причине он не показывает ожидаемый результат.Мой запрос

SELECT xf_user_group_relation.user_id, xf_user_group_relation.user_group_id, MAX( xf_user_group.display_style_priority ) AS display_style_priority
FROM xf_user_group_relation
INNER JOIN xf_user_group ON xf_user_group_relation.user_group_id = xf_user_group.user_group_id
WHERE xf_user_group.display_style_priority >=1000
GROUP BY user_id

Одна из строк в результате, который является неожиданным, это

user_id | user_group_id | display_style_priority    
86 | 11 |5200

Группа с идентификатором 11 имеет display_style_priority 2000, а не 5200. Она должна показатьидентификатор группы пользователей с display_style_priority 5200. К какой группе относится этот пользователь с наивысшим рейтингом. Может кто-нибудь указать, что я делаю неправильно.

1 Ответ

4 голосов
/ 10 июля 2011

Попробуйте изменить GROUP BY на

GROUP BY
   xf_user_group_relation.user_id, xf_user_group_relation.user_group_id

Большинство других СУБД выдают ошибку для этого запроса, поскольку каждый столбец в списке SELECT должен быть либо агрегирован, либо в GROUP BY.

Редактировать: это прекрасный пример того, почему ANSI-SQL и другие СУБД не допускают этот синтаксис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...