我有这个MySQL数据库非常奇怪的问题。奇怪的MySQL行为与COUNT
为了简化查询,让我们只想说,我打电话此查询以获取配置文件匹配的用户设置:
SELECT u.*, floor(datediff(now(), u.birth_date)/365) as age
FROM users_wr u
LEFT JOIN cities c ON c.id = u.city_id
WHERE u.id != 1 and c.country_id = 71
HAVING age >= 20 AND age <= 25
此查询现在返回的3行集(这是正确的)。然而,当我想要得到的行数是这样的:
SELECT count(*), floor(datediff(now(), u.birth_date)/365) as age
FROM users_wr u
LEFT JOIN cities c ON c.id = u.city_id
WHERE u.id != 1 and c.country_id = 71
HAVING age >= 20 AND age <= 25
LIMIT 1
然后在另一个情况下,它应该返回4,而是它一直返回5,在这种情况下,它应该返回3它返回NULL。
我不知道那是什么意思。我在sql中不是初学者,这真的很困扰我。
我不能使用group by,因为那会计算每个年龄一次,可以有很多年龄相同的用户。 – kudlajz
@kudlajz:你在说什么?这正是你需要的!你甚至尝试过吗?如果这不适合你,那你的问题就不清楚了。请张贴一些示例输入和输出来演示您正在寻找的内容。您可能会发现网站http://sqlfiddle.com有用。 –
如果您不使用GROUP BY,您的结果列表中肯定会有一个结果。 –