我有一个类似于以下内容的 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

10-07 14:28