mysql - 如何合并两个表以获取MySQL中不同表的结果

标签 mysql sql phpmyadmin

我有三张 table

enter image description here

我是用户 ID:1231。我正在尝试获取授予我访问权限的人员的结果。我的意思是他们的名字标记。

因此,根据上表,我应该得到的结果为:

enter image description here

为了获取上述结果,我尝试了一些查询。其中之一如下:

 SELECT a.UserID, a.Mark1, a.Mark2, b.Name FROM details a, profile b WHERE a.UserID IN (SELECT UserID FROM Access WHERE GrantStatus = 'granted' and GrantUserID = '1231');

执行上述查询得到以下结果:

enter image description here

有人可以帮我解决这个问题吗?

最佳答案

您需要一个加入条件:

SELECT d.userID, d.mark1, d.mark2, p.name
FROM details d JOIN
     profile p
     ON d.userID = p.userId
WHERE d.userID IN (SELECT userID
                   FROM access
                   WHERE grantstatus = 'granted' and grantuserID = '1231'
                  );

简单规则:切勿在 from 子句中使用逗号。

您只能通过 join 来执行此操作:

SELECT d.userID, d.mark1, d.mark2, p.name
FROM details d JOIN
     profile p
     ON d.userID = p.userId JOIN
     access a
     on a.userId = d.userId
WHERE a.grantstatus = 'granted' and a.grantuserID = '1231';

关于mysql - 如何合并两个表以获取MySQL中不同表的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25627414/

相关文章:

MySQL : Slow show databases;

php - 由于长度原因,列可能无法编辑

mysql - 查询是否设置了外键

mysql - max vs limit 哪个更有效

mysql - 由于 BINLOG_FORMAT = STATEMENT,使用语句格式写入二进制日志的不安全语句。

sql - 不等于运算符不工作

SQL存储过程执行计划性能不佳——参数嗅探

sql - 如果存在排序依据 (SQL Server)

php - 组合表的 SQL 查询 (n :n)

javascript - 显示所选选项的按钮