4

次のクエリを使用して、「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」を検索し、名前が Dave の 5 人が返された場合、彼の友人である 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 に答える