2016-01-17 71 views
2

我有两个表: usersusers_imgMySQL查询两个表的条​​件

我需要创建一个查询,用于选择users表有zip列不为空,并有img列空的users_images所有用户(两个表具有用户ID:。usersidusers_imguser_id所以那些可以加入) 。

users

  1. ID
  2. 拉链
  3. :LAST_TIMEBREAK

users_ids

  1. ID
  2. USER_ID(同usersid
  3. IMG

我尝试这样做:

SELECT * FROM `users` JOIN `users_ids` on users.id = users_ids.user_id 
WHERE `zip` != '' AND `img` = '' ORDER BY `last_time` DESC 

没有运气。我知道应该很简单。

+0

从你的逻辑,它应该至少是'..WHERE \'zip \'!=''AND \'img \'='''。你也确定它们是空白的而不是空的。帖子还有一些样本数据 – amdixon

+0

也许你应该包括你的表的模式? – Mox

+0

@amdixon - 是的,当然,男人。但那不是重点。我也需要这个查询(当zip和img都不是空的时候 – Rossitten

回答

1

它也会为工作,你

SELECT * FROM `users` as `u` 
JOIN `users_ids` as `uid` on `u`.`id` = `uid`.`user_id` 
WHERE `u`.`zip` IS NOT NULL 
AND `uid`.`img` IS NULL 
ORDER BY `u`.`last_time` DESC 
1

我已经修改您的查询还需要检查NullOR

试试这个:

SELECT * FROM `users` 
LEFT JOIN `users_ids` on users.id = users_ids.user_id 
WHERE (TRIM(`zip`) != '' OR `zip` is not null) AND 
(TRIM(`img`) = '' OR `img` is null) ORDER BY `last_time` DESC 
+0

MySQL返回一个空结果集 很像我的要求 AMD'img' \t TINYTEXT,\t latin1_swedish_ci \t,\t否(约NULL) – Rossitten

+0

你可能在你的连接表不匹配的值。请检查这一点。 –

+0

表中的任何一个表都可能有空数据或者存在的记录与用户标识的 –

0

这工作:

SELECT * FROM `users` as `u` 
LEFT JOIN `users_ids` as `uid` on `u`.`id` = `uid`.`user_id` 
WHERE `u`.`zip` != '' 
AND `uid`.`img` IS NOT NULL 
ORDER BY `u`.`last_time` DESC