我有一个SQL查询,如:
SELECT tbl1.alloweduser, tbl2.ID, tbl2.user_login
FROM tbl1, tbl2
WHERE NOT tbl1.alloweduser <> tbl2.ID;
上面的查询比较了两个字段,但输出了具有相同值的字段(“ID”和“alloweduser”)。
我想要做的是输出与tbl2不匹配的字段。
“ID”的值为:1,2,3,4,5,“ alloweduser ”的值为1,2,3,4。
我只想输出值 5 ,并且在此示例中它是相应的user_login。
如何?
答案 0 :(得分:1)
尝试:
SELECT tbl2.user_login, tbl2.ID
FROM tbl2
LEFT JOIN tbl1 ON tbl1.alloweduser = tbl2.ID
WHERE tbl1.alloweduser IS NULL;
答案 1 :(得分:1)
您可能希望使用LEFT JOIN进行空检查:
SELECT tbl2.ID, tbl2.user_login
FROM tbl2
LEFT OUTER JOIN tbl1
ON tb2.ID = tb1.alloweduser
WHERE tbl1.alloweduser IS NULL
确定如何指定联接的一个很好的资源链接如下:
http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/
注意:对于MySQL,您只需指定LEFT JOIN
而不是LEFT OUTER JOIN
,因为它们是同义词。
答案 2 :(得分:0)
这是你的问题
WHERE NOT tbl1.alloweduser <> tbl2.ID;
&lt;&gt; 表示&#34;不等于&#34;
你要求
NOT a <> b
&#34; NOT NOT equals&#34;
你想要
a <> b
OR
NOT a = b
不是两者。