php - 搜索用户,先回友(Order)

标签 php sql

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

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

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

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

我的问题是如何在顶部对 friend 的用户进行这样的查询?因此,例如,如果我的用户搜索“Dave”并且我返回 5 个名字为 Dave 的人,我如何才能将他的 friend Dave 排在所有其他 Dave 之上并以这种方式对查询进行排序?

感谢您的帮助。

最佳答案

试试这个:

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

关于php - 搜索用户,先回友(Order),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043264/

相关文章:

mysql - MySQL 中 EXISTS 的用法

java - oracle sql 替换 "in"进行高级查询

php - 在同一查询中选择 * 并在 mysql 中求和

php - 从 PHP 输出二进制文件作为 Javascript 二进制字符串

php - 单击提交按钮时防止页面重新加载并调用 jquery 函数

php - 我需要根据投标数量来排列我的网站中的项目列表

sql - 我应该在数据库模式中允许空值吗?

php - 如何使用 jQuery/Javascript 更改日期格式?

php - 正则表达式和正斜杠

javascript - 在 Sequelize 中查询关联表