0
如果选择具有最高显示优先级的组,会出现问题。 查询是:选择显示优先级最高的组
SELECT
xf_user_group_relation.user_id, xf_user_field_value.field_value as custom_flags,
xf_user_external_auth.provider_key,
xf_user_group_relation.user_group_id,
MAX(xf_user_group.display_style_priority) AS display_style_priority,
xf_user_group_relation.user_group_id IN(5,6,11,12) AS is_vip
FROM xf_user_group_relation
INNER JOIN xf_user_group
ON xf_user_group_relation.user_group_id = xf_user_group.user_group_id
INNER JOIN xf_user_external_auth
ON xf_user_group_relation.user_id = xf_user_external_auth.user_id
LEFT JOIN xf_user_field_value
ON xf_user_group_relation.user_id = xf_user_field_value.user_id
AND xf_user_field_value.field_id = 'gtarp_custom_flags'
WHERE
xf_user_external_auth.provider = 'steam'
AND xf_user_group.display_style_priority >= 1000
AND xf_user_group_relation.user_group_id NOT IN(19,20)
GROUP BY
xf_user_group_relation.user_id,
xf_user_external_auth.provider_key
看来它选择具有最低的ID,这不是我想要的组。我希望它选择显示优先级最高的组。
所以user_group_id应该是具有最高优先显示该组即MAX(xf_user_group.display_style_priority)
每一组用户在现在显示,所以这是行不通的。 – BlackVoid 2012-08-06 23:16:02
基本上你需要做的是,当你为任何表列选择MAX()时,你需要确保该表在GROUP BY子句中生效。 – Kalpesh 2012-08-06 23:17:43