2012-12-07 36 views
1

我有以下查询,但它没有给出结果。有两个表,visitSearchEngine和clubUsers。我想列出不在clubUsers中的用户。但是使用!=并不能帮助我。它向我展示了俱乐部用户表中的用户。MySQL Query未给出预期的结果!=不工作

SELECT distinct(vs.users), vs.avisitedDate FROM visitSearchEngine vs, clubUsers cu 
WHERE vs.users!='' 
AND (vs.users!=cu.users) 
AND vs.status='0' AND vs.hitType='googleIdentified' 
AND ((time_to_Sec(timediff(now(),vs.avisitedDate)))/60)>=5 
AND ((time_to_Sec(timediff(now(),vs.avisitedDate)))/60)<5 

请告知我在哪里出错,并建议是否有另一种编写此查询的好方法。

感谢

回答

1

试试这个:

SELECT DISTINCT(vs.users), vs.avisitedDate FROM visitSearchEngine vs, 
WHERE vs.users!='' AND NOT EXISTS (SELECT * FROM clubUsers cu WHERE vs.users = cu.users) 
AND vs.status='0' AND vs.hitType='googleIdentified' 
AND ((TIME_TO_SEC(TIMEDIFF(NOW(),vs.avisitedDate)))/60)>=5 
AND ((TIME_TO_SEC(TIMEDIFF(NOW(),vs.avisitedDate)))/60)<5 
0

你可能想的IS NOT NULL操作:

vs.users IS NOT NULL 

您无法对NULL比较字符串操作符:

mysql> SELECT NULL='', NULL<>''; 
+---------+----------+ 
| NULL='' | NULL<>'' | 
+---------+----------+ 
| NULL |  NULL | 
+---------+----------+ 
1 row in set (0.01 sec) 

我也建议让您的查询更容易阅读:

  1. 删除多余的括号
  2. 使用显式JOIN小号
1

试试这个:

SELECT distinct(vs.users), vs.avisitedDate 
FROM visitSearchEngine as vs LEFT JOIN clubUsers as cu ON vs.users= cu.users 
WHERE vs.status='0' AND vs.hitType='googleIdentified' 
AND ((time_to_Sec(timediff(now(),vs.avisitedDate)))/60)>=5 
AND ((time_to_Sec(timediff(now(),vs.avisitedDate)))/60)<5 
AND cu.users IS NULL; 
相关问题