我有一个查询,并且我返回了以下错误,但是我找不到问题,
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'HAVING DATE_FORMAT(NOW(),'%Y')附近使用正确的语法 - DATE_FORMAT(
candidates
。DOB
,'%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的狂热用户
答案 0 :(得分:3)
我马上就看到了三件事:
1 - HAVING
应该只在查询中出现一次,而不是两次
2 - HAVING
应该始终在GROUP BY
之后
3 - HAVING
仅适用于汇总功能,而非日期比较。如果您想要进行日期比较,则应使用WHERE
子句。
可能会有更多,但您的查询在当前的“格式”中极难阅读。如果您需要更多帮助,请至少某些努力使您的问题可读。
答案 1 :(得分:0)
您只需使用HAVING
关键字一次。在AND
之后取出第二个。
答案 2 :(得分:0)
在<
列和from
上的age
之前检查您的having
以下内容。你有更多。语法无效。