mysql group by error,看不到它

时间:2011-11-02 13:24:18

标签: mysql sql

我有一个查询,并且我返回了以下错误,但是我找不到问题,

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'HAVING DATE_FORMAT(NOW(),'%​​Y')附近使用正确的语法 - DATE_FORMAT(candidatesDOB,'%Y') - (第14行的DATE_'

这是我的查询,

SELECT `candidates`.`candidate_id`, 
       `candidates`.`first_name`, 
       `candidates`.`surname`, 
       `candidates`.`DOB`, 
       `candidates`.`gender`, 
       `candidates`.`talent`, 
       `candidates`.`location`, 
       `candidates`.`availability`, 
       DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) 
                   as `age`, 
       `candidate_assets`.`url`, 
       `candidate_assets`.`asset_size` 
FROM `candidates` 
LEFT JOIN `candidate_assets` ON `candidate_assets`.`candidates_candidate_id` = `candidates`.`candidate_id` 
WHERE `candidates`.`availability` = 'yes' 
AND candidates.talent = "presenter" 
AND candidates.gender = "male" 
HAVING DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <= 39
AND HAVING DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <=29 
GROUP BY `candidates`.`candidate_id`

问题是什么,我不是mySQL的狂热用户

3 个答案:

答案 0 :(得分:3)

我马上就看到了三件事:

1 - HAVING应该只在查询中出现一次,而不是两次 2 - HAVING应该始终在GROUP BY之后 3 - HAVING仅适用于汇总功能,而非日期比较。如果您想要进行日期比较,则应使用WHERE子句。

可能会有更多,但您的查询在当前的“格式”中极难阅读。如果您需要更多帮助,请至少某些努力使您的问题可读。

答案 1 :(得分:0)

您只需使用HAVING关键字一次。在AND之后取出第二个。

答案 2 :(得分:0)

<列和from上的age之前检查您的having以下内容。你有更多。语法无效。