2017-07-29 63 views
1

我正在搜索表单上用户选择年龄从。然后结果显示accroding搜索。如何运行之间查询alisas列使用MySQL php

我的这些(姓名,出生日期,EMAILID,mobileno)列

这表是我的查询

SELECT name,dob, YEAR(CURDATE()) - YEAR(dob) AS age AND age (BETWEEN '25' AND '30') FROM users 

在这里,我能够根据DOB(出生日期),但无法获得年龄在查询之间运行...

如何做?我错过了什么吗?

请帮助我。

由于提前

+0

你不能重复使用这种方式的别名 – Strawberry

+0

试试这个。 'SELECT YEAR(CURDATE()) - YEAR(dob)AS age FROM users HAVING(age> ='25'AND age <='30')' – Jitendra

回答

0

除了在查询一些语法上的错误,主要的问题是:在SELECT columns -part查询的WHERE -part内不能使用的别名。这与SQL在SELECT columns之前执行WHERE这一事实有关。只需提供您的公式也在WHERE -part:

SELECT 
    name, 
    dob, 
    YEAR(CURDATE()) - YEAR(dob) AS age 
FROM users 
WHERE YEAR(CURDATE()) - YEAR(dob) BETWEEN '25' AND '30' 

旁注:看看这个问题,因为How to calculate age (in years) based on Date of Birth and getDate()公式并不总是给出正确的结果(如出生日期“2000年12月1日'和当前日期'2017年7月29日'它返回17,它应该是16)

+0

谢谢@Peter,它工作正常。 – konda