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