[英]SQL inner join on two tables
我有两个表, managers
和users
。
managers
:
manager_user_id user_user_id
--------------- ------------
1000011 1000031
1000011 1000032
1000011 1000033
等等
users
:
user_id name
------- ----
1000011 John
1000031 Jack
1000032 Mike
1000033 Paul
我想要做的是为特定的经理提取用户名和他们的用户ID列表。 所以像......
John的用户是:
1000031 Jack
1000032 Mike
1000033 Paul
我尝试了以下SQL,但这是错误的:
SELECT users.name,
users.user_id
FROM users
INNER JOIN managers
on users.user_id = managers.user_user_id
WHERE managers.manager_user_id='1000011'
我认为您的查询中没有错误。但是您可以在没有引用的情况下尝试查询
SELECT users.name,
users.user_id
FROM users
INNER JOIN managers
on users.user_id = managers.user_user_id
WHERE managers.manager_user_id=1000011
请尝试以下方法:
SELECT U.USER_ID, U.NAME
FROM USER U JOIN MANAGER M ON U.USER_ID = M.USER_USER_ID
JOIN USER U1 ON U1.USER_ID = M.MANAGER_USER_ID
WHERE M.MANAGER_USER_ID = ? OR U1.NAME = ?
您的查询似乎是正确的,也许您的USER_ID是整数,并且您将它与字符串进行比较,这就是为什么它不起作用
另一种方案:
你也可以使用子查询来做到这一点
SELECT U.USER_ID, U.NAME
FROM USERS U
WHERE U.USER_ID IN (SELECT USER_USER_ID
FROM MANAGER
WHERE MANAGER_USER_ID IN (SELECT USER_ID FROM USERS WHERE NAME='John'))
您的查询似乎没问题。
您可以检查以下SQL小提琴 。
select u.name, u.user_id, m.manager_user_id
from users u
left join managers m on m.user_user_id = u.user_id
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.