如何在MySQL中使用ORDER BY FIELD和子查询?

时间:2010-11-06 18:44:20

标签: mysql subquery

假设有两个表。第一个表'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`))

不起作用。

5 个答案:

答案 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