我的查询存在问题,
SELECT id, pseudo, nom, prenom, sexe, ville,
FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge
FROM user
WHERE sexe = 'Homme' AND mAge BETWEEN 18 AND 25 OR ville = 'Bordeaux'
应该使用where条件返回匹配用户。 问题是如下,mAge不存在我得到以下错误:
看起来我的别名在where条件下无法正常工作。
如果我删除mAge WHERE CLAUSE,我成功获取了mAge别名。
我需要你们
提前致谢!
答案 0 :(得分:6)
您不能在WHERE子句中使用列别名:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html。
您必须重新考虑您的查询或更改为:
SELECT id, pseudo, nom, prenom, sexe, ville,
FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge
FROM user
WHERE sexe = 'Homme' AND
FLOOR(DATEDIFF (NOW(), date_naissance)/365) BETWEEN 18 AND 25
OR ville = 'Bordeaux'
你可能还想查看你的AND和OR,以及你可能想要包括一些括号。
答案 1 :(得分:0)
我使用此查询来获取用户的年龄(年和月)
SELECT
username
,date_of_birth
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) DIV 12 AS years
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) MOD 12 AS months
FROM users
截至今天的结果:
chucknorris, 1979-04-10 00:00:00, 35, 2