我有三张 table
我是用户 ID:1231。我正在尝试获取授予我访问权限的人员的结果。我的意思是他们的名字标记。
因此,根据上表,我应该得到的结果为:
为了获取上述结果,我尝试了一些查询。其中之一如下:
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');
执行上述查询得到以下结果:
有人可以帮我解决这个问题吗?
最佳答案
您需要一个加入
条件:
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/