4

我正在使用以下查询从我的“用户”表中选择用户,其中登录用户的会话 ID 为 $uid:

SELECT first_name, last_name, uid, hometown from users  where concat(first_name,' ',last_name) like '%$q%' and uid <> $uid LIMIT 6

我还使用以下查询从“朋友”表中选择用户的所有朋友:

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 排在所有其他 Dave 之上并以这种方式对查询进行排序?

谢谢你的帮助。

4

2 回答 2

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
于 2012-06-15T01:00:51.063 回答
-2

我最好的想法是在您的数据库中设置一个“排名”,并为您希望首先订购的人赋予它们 1 的值。

SELECT `fields` FROM `table` ORDER BY `rank` DESC
于 2012-06-15T00:49:18.747 回答