好的,所以我正在为 MySQL 开发一个搜索功能,但遇到了一些我似乎无法解决的问题。我正在尝试制作一个脚本来搜索用户的朋友,并以更好的分数返回朋友。这是我到目前为止所拥有的:
SELECT id, first_name, last_name, image_id FROM users
WHERE id IN (
SELECT receiver AS friend FROM friends WHERE initiator = :me AND status = :status
UNION
SELECT initiator AS friend FROM friends WHERE receiver = :me AND status = :status
) ORDER BY score AND concat(first_name, ' ', last_name) LIKE '%test query%';
现在一切正常,直到我尝试按分数订购朋友。任何人都可以锻炼如何按分数排序朋友吗?如果您需要我澄清任何事情,请询问。
我有以下两张表。
用户表:
好友表:
根据要求,这里是一些示例数据:
例如,我有三个用户:
ID: 1, first_name: Michael, last_name: Sample
ID: 2, first_name: John, last_name: Citizen
ID: 3, first_name: Caitlin, last_name: Wired
下面的第一个条目将通过显示 Michael 发起了一个好友请求并且 Caitlin(接收者)接受了它,从而使 Michael 和 Caitlin 成为朋友。(因此状态为 1)他们的基本分数是 10。第二个条目显示 John 也是 Caitlin 的朋友(由 Caitlin 发起),但分数更高。
ID: 10000, initiator: 1, receiver: 3, status: 1, score: 10
ID: 10001, initiator: 3, receiver: 2, status: 1, score: 20
所以在这个示例数据的情况下。如果 Caitlin 是搜索她的朋友的用户,它应该显示 John 而不是 Michael。