2010-10-22 59 views
-1

如何添加一个由users_friends.date_created来管理两个select查询的订单。MySQL ORDER BY问题

这是我的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 

回答

1

您可以通过添加外选择与订单和包裹工会作为派生表

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 
+0

这不工作我得到一个错误没有数据库中选择 – HELP 2010-10-22 12:17:57

+0

如果原始查询工作它应该工作。 – 2010-10-22 14:36:46

+0

我得到它自己的工作,但我会给你信贷帮助我感谢,因为这个答案可能会帮助别人。 – HELP 2010-10-22 15:35:24

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