MySQL HAVING функция - PullRequest
       24

MySQL HAVING функция

0 голосов
/ 17 ноября 2011

У меня есть команда SQL, в которой есть следующая строка,

HAVING
   DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y')
   - (DATE_FORMAT(NOW(), '00-%m-%d')
   < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) <= ". $v

$v - это переменная PHP, которая является целым числом, умноженным на 10. Вместо поиска всех записей, у которых DOB меньше $ v, я хочу вернуть все записи, у которых DOB меньше, чем $v но больше чем $v - 10 это возможно?

1 Ответ

0 голосов
/ 17 ноября 2011

Вы можете переместить оператор Имея, чтобы выбрать предложение, присвоить ему псевдоним (скажем, selectedValue) и использовать псевдоним в предложении ИмеяОкончательный SQL-запрос будет выглядеть так:

  select 
      DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`candidates`.`DOB`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`candidates`.`DOB`, '00-%m-%d')) calculatedValue
  from 
    candidates 
  having 
    calculatedValue <= 15 and calculatedValue > 5

Вы должны немного его изменить, чтобы использовать его внутри скрипта php.Я сделал форматирование, но тогда оно было менее читабельным.

...