gpt4 book ai didi

php - mysql表中两列的交叉选择

转载 作者:行者123 更新时间:2023-11-29 07:57:26 25 4
gpt4 key购买 nike

我有一个 mysql 表,由关注其他用户的用户组成。我可以查询特定用户(我)正在关注哪些其他用户,也可以查询谁正在关注特定用户(我)。这是两个列表。我无法查询的是,当我有一个关注我的人列表时,我需要知道我正在关注其中的哪一个。

就好像 Tim、Peter 和 Suzy 正在关注我,而我则关注他们三个中的 Tim 和 Suzy。这是我的表:USER_ID 列中的人员正在关注 FOLLOW_ID 列中的人员。

enter image description here

查询关注我的人列表:(我是26结尾的ID):

$userid = '000000000026';
$i = 0;
try {
$stmt = $conn->prepare("SELECT USER_ID FROM FOLLOW WHERE FOLLOW_ID=?");

$stmt -> execute(array($userid));
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$row2[$i] = $row['USER_ID'];
$i++;
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
$response["success"] = 0;
}


for ($c=0; $c<$i; $c++) {
echo 'USER_ID FOLLOWING ME: ' . $row2[$c] . '<br>';
}

结果:

USER_ID FOLLOWING ME: 000000000030
USER_ID FOLLOWING ME: 000000000033
USER_ID FOLLOWING ME: 000000000028

所以,正如您从表格中看到的那样,这三个人正在跟踪我。

现在我想知道我应该遵循这三个中的哪一个。我不知道获取我关注的人的列表然后匹配这两个列表是否有效。根据这个列表,我关注了 4 个人。我看到其中有两个人正在关注我(ID 以 28 和 33 结尾),我希望获得此信息。

enter image description here

期望的结果:

USER_ID FOLLOWING ME: 000000000030, NoFollow
USER_ID FOLLOWING ME: 000000000033, Follow
USER_ID FOLLOWING ME: 000000000028, Follow

我对 sql 的了解很平庸,所以请忽略高级技术或请提供解释。谢谢。

最佳答案

试试这个方法:

select distinct t1.user_id, t1.follow_id, 
IF (t2.user_id IS NULL, 'NoFollow', 'Follow') AS Following
from test t1 left join
test t2 on ( t2.follow_id = t1.user_id
and t1.follow_id = t2.user_id)
where t1.user_id = 26

在 fiddle 上查看:http://sqlfiddle.com/#!2/f108c/31

关于php - mysql表中两列的交叉选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741185/

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