为什么这个 SQL return 为空?
Why is this SQL return null?
我不知道为什么 SQL return 没有行:
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team.login_id = '39'
AND NOT EXISTS (
SELECT 0
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
AND team_rel.login_id = '39'
AND team_rel.team_id = team.id
)
而下面的 SQL(相同但没有 NOT EXISTS 条件):
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team.login_id = '39'
returns:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
和 NOT EXISTS 子查询(在 team_id 上测试相同 SQL)returns :
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
AND team_rel.login_id = '39'
AND team_rel.team_id = team.id
returns:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
我希望我的第一个 select 到 return:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
但它没有 return 任何行?!
SELECT DISTINCT team_rel.team_id, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team_rel.login_id = 39
AND team_rel.team_id NOT IN
(SELECT team_id FROM team_rel
INNER JOIN team ON team.id = team_rel.team_id AND
team.login_id = team_rel.login_id)
我不知道为什么 SQL return 没有行:
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team.login_id = '39'
AND NOT EXISTS (
SELECT 0
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
AND team_rel.login_id = '39'
AND team_rel.team_id = team.id
)
而下面的 SQL(相同但没有 NOT EXISTS 条件):
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team.login_id = '39'
returns:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
和 NOT EXISTS 子查询(在 team_id 上测试相同 SQL)returns :
SELECT team_rel.team_id
, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
AND team_rel.login_id = '39'
AND team_rel.team_id = team.id
returns:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 23 | 39 |
+---------+----------+
| 25 | 39 |
+---------+----------+
我希望我的第一个 select 到 return:
+---------+----------+
| team_id | login_id |
+---------+----------+
| 13 | 39 |
+---------+----------+
| 16 | 39 |
+---------+----------+
但它没有 return 任何行?!
SELECT DISTINCT team_rel.team_id, team_rel.login_id
FROM team_rel
INNER JOIN team ON team_rel.login_id = team.login_id
WHERE team_rel.login_id = 39
AND team_rel.team_id NOT IN
(SELECT team_id FROM team_rel
INNER JOIN team ON team.id = team_rel.team_id AND
team.login_id = team_rel.login_id)