同一表上的MySQL内部联接不工作

同一表上的MySQL内部联接不工作,mysql,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 | Sob

这是我的桌子:

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作为输出中的两列。我想不出来

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)

为什么要为一个简单的选择查询执行联接

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和
code
s是数字,则不要使用单引号。为字符串(和日期)常量保留它们


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

为什么要对简单的选择查询进行联接

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和
code
s是数字,则不要使用单引号。为字符串(和日期)常量保留它们


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

显然,它不起作用在你的头脑之外并不明显:)输出是什么?你应用什么逻辑来获得输出(用简单的英语)显然,它不起作用在你的头脑之外并不明显:)输出是什么?你用什么逻辑来获得输出(用简单的英语)?嗯。。。我认为你的解决方案听起来是对的。为什么我要把这个复杂化。。。我想我以前也试过类似的方法。我一定是忘了用或用。谢谢。嗯。。。我认为你的解决方案听起来是对的。为什么我要把这个复杂化。。。我想我以前也试过类似的方法。我一定是忘了用或用。谢谢