我试图显示用户列表,其中 activated=1
帐户列表位于下方,而 activated=0
帐户列表位于顶部。我尝试使用 UNION
因为我需要所有非事件帐户作为 ORDER BY 创建的 DESC
而激活帐户设置为 ORDER BY email
但由于某种原因我所有ORDER BY
命令被忽略。我在这里做错了什么?
(
SELECT
email,
roles.full role,
created
FROM sol_users users
JOIN sol_user_roles ur ON users.id = ur.user_id
JOIN sol_roles roles USING(role_id)
WHERE activated = 0
ORDER BY created DESC
)
UNION
(
SELECT
email,
roles.full role,
created
FROM sol_users users
JOIN sol_user_roles ur ON users.id = ur.user_id
JOIN sol_roles roles USING(role_id)
WHERE activated = 1
ORDER BY email
)
需要将非事件用户放在顶部,以便管理员知道需要激活这些用户。
最佳答案
你不需要工会 - 尝试一下:
SELECT email, roles.full role, created
FROM sol_users users
JOIN sol_user_roles ur ON users.id = ur.user_id
JOIN sol_roles roles USING(role_id)
ORDER BY activated, case activated when 1 then email end, created DESC
关于MySQL 在使用 UNION 的同时使用 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250977/