2010-01-20 68 views
0

这种查询方法的工作原理:菜鸟需要帮助的年龄计算

SELECT xxx 
FROM xxx-table 
WHERE YEAR(CURRENT_DATE()) - YEAR('1988-10-27') 
         - (DATE_FORMAT(CURRENT_DATE() , '%m-%y') < '12-31') 
            Between 20 and 25 

但我需要的是这样的事情...

SELECT YEAR(CURRENT_DATE()) 
        - YEAR('(Select xxx 
           From xxx-table 
           where year_id=9 limit 1)-10-27') 
           - (DATE_FORMAT(CURRENT_DATE() , '%m-%y') 
          < '12-31') 
     Between 20 and 25 

我需要从数据库中并处理它提取值使用子查询,但它不起作用。我猜子功能不允许子查询。有没有解决这个问题?

在此先感谢!

+0

标签是吸引合适的人来回答你的问题的一个好办法。由于这是一个SQL查询,如果您可以使用数据库风格编辑您的问题(Postgresql?Mysql?),这将对我们有所帮助 – APC 2010-01-20 07:14:16

回答

2
  1. 你已经将你的子选择符引用到引号中,所以它被当作一个字符串来处理。
  2. 真的没有必要追加你在子查询中选择的年份的月份和日期,因为你在那里运行了一年功能。

试试这个:

SELECT YEAR(CURRENT_DATE()) 
        - (Select xxx 
           From xxx-table 
           where year_id=9 limit 1) 
           - (DATE_FORMAT(CURRENT_DATE() , '%m-%y') 
          < '12-31') 
     Between 20 and 25