php - 用于检查相互值的 MySQL 查询

标签 php mysql

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

相关文章:

php - Symfony Javascript 表单验证

php - 为什么在我访问 app.php 时我的 Symfony2 安装出现 404ing?

php - 高效设计和管理用户设置模块

mysql - 带有子查询的Mysql更新查询有什么问题?

mysql - 改进 MySQL 联合语句

php - 如何优化这个网站。需要一般建议

php - 使用 Composer CLI 将数据添加到额外的属性

php - 如何根据 mysql 中以前的条目更新表

java - Android 应用程序不显示来自网络服务器的数据

python - 类型错误 : execute() takes at most 3 arguments (11 given)