我正在使用以下查询从我的'users'表中选择用户,其中登录用户的会话ID为$ uid:
SELECT first_name, last_name, uid, hometown from users where concat(first_name,' ',last_name) like '%$q%' and uid <> $uid LIMIT 6
我还使用以下查询从'friends'表中选择所有用户的朋友:
SELECT a.first_name, a.uid, a.last_name FROM users a, friends b WHERE a.uid = b.friend_two AND b.friend_one = $uid
我的问题是如何在朋友的用户顶部订购此类查询?例如,如果我的用户搜索“Dave”并且我返回5个名字的人Dave,我怎么能将他的朋友Dave排在所有其他Daves之上并以这种方式命令查询?
感谢您的帮助。
答案 0 :(得分:4)
试试这个:
SELECT
a.first_name,
a.last_name,
a.uid,
a.hometown,
IF(b.friend_two IS NULL, 0, 1) AS isFriend
FROM
users a
LEFT JOIN
friends b ON a.uid = b.friend_two AND b.friend_one = $uid
WHERE
CONCAT(a.first_name, ' ', a.last_name) LIKE '%q%'
AND a.uid <> $uid
ORDER BY
isFriend DESC
答案 1 :(得分:-2)
我最好的想法是在您的数据库中设置'排名',并为您首先订购的人提供值1。
SELECT `fields` FROM `table` ORDER BY `rank` DESC