2 votes

Comment utiliser ORDER BY FIELD avec une sous-requête dans MySQL ?

Suppose there are two tables. First table, 'user_actions', has two fields: 'user_id' and 'action'. Second table, 'users', also has two fields: 'id' and 'name'. I want to sort the first table so that actions commited by users Aaron or Bruce go first and actions commited by Yuriy and Zorro go last. How would I do that?

J'ai essayé ceci :

select * from `user_actions` order by field(`user_id`,(select distinct `id` from `users` order by `name`))

Ne fonctionne pas.

3voto

rosscj2533 Points 4588
sélectionner ua.user_id, ua.action, u.name de user_actions ua
inner join users u sur u.user_id = ua.user_id
order by u.name

3voto

mmutilva Points 5226

Pourquoi la sous-requête et non une jointure?

Quelque chose comme ceci:

select ua.*
from user_actions ua inner join users u on ua.user_id = u.id
order by u.name

0voto

davidk01 Points 1362

Que diriez-vous

select user_id, action from user_actions join users 
  on user_actions.user_id = users.id 
  order by name

0voto

Nervo Verdezoto Points 521

Vous pouvez essayer :

SELECT u1.user_id, u1.action, u2.name FROM user_actions u1, users u2
WHERE u1.user_id=u2.id 
ORDER BY u2.name

-1voto

prap19 Points 494

Je suppose que cette requête suffirait

SELECT * FROM user_actions ORDER BY name

Par défaut, l'ordre par mot-clé trie par ordre croissant, donc vous n'avez pas besoin de ASC après le champ 'name'. Si vous voulez l'ordre inverse, ajoutez simplement DESC après 'name'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X