我有一个类似于以下内容的 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"
那么也许我必须遍历结果并查询 DB WHERE suid = $uid。
我不知道如何进行第二个查询。有什么建议么?
最佳答案
这里的一个选择是自连接,连接条件是一个表中的 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