Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择显示优先级最高的组_Mysql - Fatal编程技术网

Mysql 选择显示优先级最高的组

Mysql 选择显示优先级最高的组,mysql,Mysql,我在选择显示优先级最高的组时遇到问题。 查询是: 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

我在选择显示优先级最高的组时遇到问题。 查询是:

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最低的组,这不是我想要的。我希望它选择具有最高显示优先级的组

因此,用户组id应该是显示优先级最高的组,即
MAX(xf\u user\u group.display\u style\u priority)

尝试以下方法:

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.display_style_priority,
    xf_user_group_relation.user_id,
    xf_user_external_auth.provider_key

用户所在的每个组现在都显示出来,因此它不起作用。基本上,您需要做的是,当您为任何表列选择
MAX()
时,您需要确保表位于
GROUPBY
子句中才能生效。