0

这是我的桌子:

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 和 name 仅在输出中作为 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)
4

1 回答 1

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));

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

您的查询没有返回任何行的原因是join条件与where子句冲突。join条件指定s对于和rID是相同的。该子句正在寻找两个不同的值(`a.rID = '74' 和 b.rid = '0')。abwhere

于 2013-09-05T22:53:36.957 回答