0

我有两张桌子,managersusers

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 的列表。所以像……</p>

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'
4

4 回答 4

2

我认为您的查询没有错误。但是您可以尝试不带引号的查询

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
于 2013-08-14T08:06:06.947 回答
0

您的查询似乎没问题。
您可以检查以下SQL Fiddle

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
;
于 2013-08-14T08:05:55.807 回答
0

请尝试以下方法:

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 = ?
于 2013-08-14T07:31:04.597 回答
0

您的查询似乎是正确的,也许您的 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'))
于 2013-08-14T07:45:52.870 回答