我有一个类似于以下内容的 MySQL 数据库:
uid suid
1 5
1 6
2 5
5 1
5 2
我通过 POST 方法给它一个唯一的“uid”,称它为 1。我需要做的是返回所有“suid”,其中 $uid“有”suid AND suid(作为 uid)“有”$ uid(作为 suid。)因此,在上面的示例中,脚本应该只返回 5。
我知道我的第一步是
"Select * FROM table Where uid = $uid"
然后我可能必须遍历结果并查询数据库 WHERE suid = $uid。 我不知道如何进行第二个查询。有什么建议吗?
最佳答案
这里的一个选择是 self 加入,加入条件是 uid
在一张表中匹配 suid
在另一个表中,反之亦然 suid
在第一个表中。
SELECT
t1.suid
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.uid = t2.suid AND
t1.suid = t2.uid
WHERE
t1.uid = 1
在应用 WHERE
之前子句,上面的查询将返回两条记录:
uid | suid (uid not selected)
1 | 5
5 | 1
WHERE
子句然后使用 uid
选择第一条记录,这就是我们想要的。您传递给它的参数。
此处演示:
Rextester
关于php - 用于检查相互值的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807649/