我有桌子:
likes - id, user_id, like_user_id<br>
users - id, name, email ...,<br>
friends - id, user_id, friend_id, status<br>
是否可以先使用一个SQL查询对其进行排序,然后向其他用户显示朋友。 任何帮助,将不胜感激。 谢谢。
我试过这个并且它有效,但问题是它给了我双重结果的用户:
select *
from `likes`
left join `users` on `users.id` = `likes.user_id`
left join `friends` on `friends.user_id` = `likes.user_id`
or `friends.friend_id` = `likes.user_id`
where `likes.id` = 1
order by `friends.user_id` = 5
or `friends.friend_id` = 5
答案 0 :(得分:1)
您需要使用此处的UNION
合并喜欢的用户与合作伙伴。完成此操作后,您可以创建一个人工列friend
,在好友查询中填充1
,在类似查询中填充0
。稍后您可以按该栏目订购。
SELECT
friends.user_id,
1 as friend,
users.*
FROM
friends
JOIN users ON users.id = friends.friend_user_id
UNION SELECT
likes.user_id,
0 as friend,
users_liked.*
FROM
likes
JOIN users as users_liked ON likes.like_user_id = users_liked.id
WHERE
user_id = '$userId'
ORDER BY friend DESC, id ASC
这将返回所有朋友的列表,然后是所有喜欢用户的列表。