【发布时间】:2020-11-13 18:21:05
【问题描述】:
我有一个具有基本结构的表:
id | first_name | last_name | role_id
role_id 是 int 类型,用户可以添加新角色。我需要按角色名称排序,而不是按角色 ID,但我想避免加入。有没有办法制作 SELECT 语句 我可以做这样的事情:
SELECT users.*, (
if(role_id = 1, roleName),
if(role_id = 2, roleName2),
if(role_id = 3, roleName3))
AS roleName )
ORDER BY roleName DESC
【问题讨论】:
-
所以你有一个类似
roles的表,其中存储了角色并通过外键引用它们以及按角色名称对它们进行排序(存储在roles表中)而无需实际访问roles表? -
@Progman 就是这种情况 - 尽可能避免加入。
-
为什么要避免使用
JOIN?如果你想避免JOIN,角色名称应该从哪里来? -
我正在缓存角色(因为它们不经常添加),所以我将它们放在后端。
-
只需加入即可。或者在缓存了角色名称的客户端中排序。
标签: mysql