MySQL ORDER BY问题

时间:2010-10-22 10:37:37

标签: mysql sql-order-by

如何通过管理两个选择查询的users_friends.date_created添加订单。

这是我的MySQL代码。

(SELECT A.user_id, A.friend_id, B.username, B.avatar
FROM  users_friends AS A 
INNER JOIN users AS B 
ON A.friend_id = B.user_id 
AND A.user_id = 3 
AND A.friendship_status = 1)
UNION
(SELECT A.friend_id, A.user_id, B.username, B.avatar
FROM users_friends AS A 
INNER JOIN users AS B 
ON B.user_id = A.user_id 
AND A.friend_id = 3 
AND A.friendship_status = 1)
LIMIT 10

2 个答案:

答案 0 :(得分:1)

您可以使用order by添加外部选择,并将union包装为派生表

SELECT user_id, friend_id, username, avatar FROM (
(SELECT A.user_id, A.friend_id, B.username, B.avatar
FROM  users_friends AS A 
INNER JOIN users AS B 
ON A.friend_id = B.user_id 
AND A.user_id = 3 
AND A.friendship_status = 1)
UNION
(SELECT A.friend_id, A.user_id, B.username, B.avatar
FROM users_friends AS A 
INNER JOIN users AS B 
ON B.user_id = A.user_id 
AND A.friend_id = 3 
AND A.friendship_status = 1)
LIMIT 10
) C
ORDER BY avatar

答案 1 :(得分:0)

如果在查询中也允许选择date_created列,那么我们可以将结果的并集命令为 -

(SELECT A.user_id, A.friend_id, B.username, B.avatar, A.date_created as createdDate
FROM  users_friends AS A 
INNER JOIN users AS B 
ON A.friend_id = B.user_id 
AND A.user_id = 3 
AND A.friendship_status = 1)
UNION
(SELECT A.friend_id, A.user_id, B.username, B.avatar, A.date_created as createdDate
FROM users_friends AS A 
INNER JOIN users AS B 
ON B.user_id = A.user_id 
AND A.friend_id = 3 
AND A.friendship_status = 1)
order by createdDate LIMIT 10