2

我的查询有问题,

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 不存在我收到以下错误:

1054 - “where 子句”中的未知列“mAge”

看起来我的别名在 where 条件下无法正常工作。

如果我删除了 mAge WHERE CLAUSE,我成功地获得了 mAge 别名。

我需要你们

提前致谢 !

4

2 回答 2

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'

Ps,您可能还想看看您的 AND 和 OR,以及您可能想要包含一些括号。

于 2013-07-18T22:08:40.853 回答
1

我使用此查询来获取用户的年龄(年和月)

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
于 2014-06-06T12:33:35.383 回答