两个带条件表的MySQL查询
我有两张桌子:两个带条件表的MySQL查询,mysql,Mysql,我有两张桌子: users和users\u img 我需要创建一个查询,从users表中选择zip列不为空且img列在users\u image中为空的所有用户(两个表都有用户id:usersid和users\u img,以便可以加入这些表) 用户 身份证 名字 拉链 上次 用户ID 身份证 用户id(与users中的id相同) img 我试过这个: SELECT * FROM `users` JOIN `users_ids` on users.id = users_ids.user_id W
users
和users\u img
我需要创建一个查询,从users
表中选择zip
列不为空且img
列在users\u image
中为空的所有用户(两个表都有用户id:users
id和users\u img
,以便可以加入这些表)
用户
用户ID
users
中的id
相同)SELECT * FROM `users` JOIN `users_ids` on users.id = users_ids.user_id
WHERE `zip` != '' AND `img` = '' ORDER BY `last_time` DESC
没有运气。我知道应该很简单。我已经修改了您的查询,以检查
或中的值是否为空
试试这个:
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
这起到了作用:
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
它也会为你工作
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
根据您的逻辑,它至少应该是。其中'zip'!='和'img`=''
。另外,您是否确定它们为空且不为空。也发布一些示例数据也许你应该包括你的表的模式?@amdixon-是的,当然,伙计。但这不是重点。我也需要这个查询(当zip和img都不为空时)。我不知道怎么做。但我会添加一些额外的信息以使其更清楚。谢谢!!你需要生成一个MCVE()。在有关数据库查询的问题中,这通常意味着您需要显示表的最小架构、每个表的一小组行、您得到的结果、结果错误的原因以及所需的结果。您可能需要在用户
表中输入3-6个条目,而用户ID
表。如果没有它,我们不得不猜测您的问题是什么。MySQL返回了一个空结果集,与我的请求amdimg
tinytext,latin1\u swedish\u ci非常相似,否(关于null)您的联接表中可能有不匹配的值。请检查这一点。您的表中可能有空数据,或者存在的记录与此查询中的userID不匹配,而没有where
子句。如果您没有得到任何结果,这意味着我们在JOIN
中遇到问题。请从user中选择*s
JOINusers\u id
on users.id=users\u id.user\u id WHERE(zip
!=''或zip
不为空)和(img
!=''或img
不为空)按上次
DESC说明排序进行查询时,我得到三个结果(因为有三个用户的zip和img都不为空)但是有200人的拉链不是空的,而是空的,因为一个奇怪的原因我不能得到这些!