MySQL INNER JOIN在同一个表上无法正常工作

时间:2013-09-05 22:49:47

标签: mysql

这是我的表:

nID | tID | rID | code | name
------------------------------
10  | 6   | 74  | 4254 | Argos
11  | 7   | 74  | 4254 | Okrash
12  | 8   | 74  | 4254 | Pyro
13  | 8   | 0   | 4254 | Maja
14  | 9   | 74  | 4254 | Caiu
15  | 10  | 74  | 4254 | Sobre
16  | 10  | 0   | 4254 | Inye

这就是我需要的结果:

nID | name
-------------
10  | Argos
11  | Okrash
13  | Maja
14  | Caiu
16  | Inye

以下是我正在使用的MySQL查询。显然它不起作用(它没有返回输出)。我还需要nID并仅在输出中将其命名为2列。无法理解。

SELECT a.nID, a.name, b.nID, b.name FROM codeTable AS a
INNER JOIN codeTable AS b
ON a.rID = b.rID
WHERE a.rID='74' AND a.code='4254' AND a.tID NOT IN (10, 8)
AND b.rID='0' AND b.code='4254' AND b.tID IN (10, 8)

1 个答案:

答案 0 :(得分:3)

为什么要为简单的选择查询进行连接?

SELECT ct.nID, ct.name, ct.nID, ct.name
FROM codeTable ct
WHERE (ct.rID = '74' AND ct.code = '4254' AND ct.tID NOT IN (10, 8)) or
      (ct.rID = '0' AND ct.code = '4254' AND ct.tID IN (10, 8));

如果您的idcode是数字,请不要使用单引号。为字符串(和日期)常量保留它们。

查询返回没有行的原因是因为join条件与where子句冲突。 join条件指定rIDa的{​​{1}}相同。 b子句正在寻找两个不同的值(`a.rID ='74'和b.rid ='0')。