【问题标题】:how to run between query for alisas column using mysql php如何使用mysql php在查询别名列之间运行
【发布时间】:2017-07-29 10:28:52
【问题描述】:

我正在处理用户选择年龄的搜索表单。然后根据搜索结果显示。

我的表作为这些 (name,dob,emailid,mobileno) 列

这是我的查询

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

在这里,我可以根据 dob(DateofBirth) 获取年龄,但无法在查询之间运行...

怎么做?我错过了什么吗?

请帮助我。

提前致谢

【问题讨论】:

  • 您不能以这种方式重复使用别名
  • 试试这个。 SELECT YEAR(CURDATE()) - YEAR(dob) AS age FROM users HAVING (age >= '25' AND age <= '30')

标签: php mysql


【解决方案1】:

除了查询中的一些语法错误之外,主要问题是:您不能在WHERE-部分中使用查询的SELECT columns-部分中的别名。这与 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)

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多