假设有两个表。第一个表'user_actions'有两个字段:'user_id'和'action'。第二个表“用户”也有两个字段:'id'和'name'。我想对第一个表进行排序,以便用户Aaron或Bruce提交的操作首先执行,Yuriy和Zorro提交的操作最后进行。我该怎么做?
我试过了:
select * from `user_actions` order by field(`user_id`,(select distinct `id` from `users` order by `name`))
不起作用。
答案 0 :(得分:3)
select ua.user_id, ua.action, u.name from user_actions ua
inner join users u on u.user_id = ua.user_id
order by u.name
答案 1 :(得分:3)
为什么子查询而不是连接?
这样的事情:
select ua.*
from user_actions ua inner join users u on ua.user_id = u.id
order by u.name
答案 2 :(得分:0)
怎么样
select user_id,action from user_actions join users
on user_actions.user_id = users.id
order by name
答案 3 :(得分:0)
您可以尝试:
SELECT u1.user_id, u1.action, u2.name FROM user_actions u1, users u2
WHERE u1.user_id=u2.id
ORDER BY u2.name
答案 4 :(得分:-1)
我想这个查询就足够了
SELECT * FROM user_actions ORDER BY name
默认情况下按关键字排序按升序排序,因此在“名称”字段后不需要ASC。如果你想要相反的方式,只需在'name'之后添加DESC