这是我的表:
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)
答案 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));
如果您的id
和code
是数字,请不要使用单引号。为字符串(和日期)常量保留它们。
查询返回没有行的原因是因为join
条件与where
子句冲突。 join
条件指定rID
和a
的{{1}}相同。 b
子句正在寻找两个不同的值(`a.rID ='74'和b.rid ='0')。