gpt4 book ai didi

php - 以下是 mySQL 表搜索结果

转载 作者:行者123 更新时间:2023-11-29 13:00:43 27 4
gpt4 key购买 nike

我有一个关注系统,用户可以互相关注并搜索要关注的用户。以下是用户下表的示例:

Users Table:
+-------+-----------+
| id | userName |
+-------+-----------+
| 1 | John |
| 2 | Harriet |
| 3 | Chris |
| 4 | Lisa |
| 5 | Joe |
+-------+-----------+

Following Table:
+-------+-------+-------+
| id | id_1 | id_2 |
+-------+-------+-------+
| 1 | 5 | 3 |
| 2 | 1 | 2 |
| 3 | 1 | 5 |
| 4 | 5 | 4 |
+-------+-------+-------+

我想知道如何构造一个 mySQL 语句来将以下表与users表连接起来,其中用户名类似于“%$search%”以返回所有此事件的结果(即搜索'jo'返回John和Joe),并且当每个人有多个结果时(即Joe将在以下中出现两次)仅返回结果其中 id_1 是当前登录的用户 ID,表明登录的用户已经关注此人。

$search = $_POST['search'];
$userid = $_POST['userid'];

$qry = "
SELECT u.id
, u.userName
, f.id_1
, f.id_2
FROM users u
LEFT
JOIN following f
ON IF('$userid' = f.id_1, u.id = f.id_2, u.id = f.id_1)
WHERE u.userName LIKE '%$search%';
";

此查询返回下表中出现的每个用户名,但它应该只返回一次。

任何帮助都会很棒。谢谢。

最佳答案

不太确定,但尝试一下

SELECT u.id
, u.userName
, f.id_1
, f.id_2
FROM users u
LEFT JOIN following f
ON u.id in (f.id_1,f.id_2)
AND f.id_1 = '$userid'
WHERE u.userName LIKE '%$search%'
ORDER BY u.id
LIMIT 1;

关于php - 以下是 mySQL 表搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23376778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com