У меня есть футболисты в базе данных. У каждого из них рейтинг (1 лучше), и я рассчитываю их возраст на лету в запросе MYSQL. Этот запрос выполняет ORDER BY, используя их рейтинг и их возраст. Поэтому я сначала это ...Можете ли вы сделать if/else логику в инструкции MYSQL?
$rankquerytext="ranking + age";
Тогда у меня есть запрос ...
$sql = "SELECT *, FLOOR(DATEDIFF(CURDATE(), born)/365.25) AS age
FROM players
ORDER BY " . $rankquerytext . "";
Это работает просто отлично. Тем не менее, я хотел бы получить немного более конкретный, чем просто добавить их возраст к их ранжированию. Например, я бы предпочел, чтобы сделать если/другое либо в запросе MySQL как-то, или непосредственно перед ним, такие как ...
if (age < 25) {
$ageadjustment=-5;
} else if (age >= 29) {
$ageadjustment= 8;
} else {
$ageadjustment=0;
}
А потом я хотел бы добавить «$ ageadjustment» к их ранжированию, а не к «возрасту».
Например, при использовании «ранжирования + возраста», если Кальвин Джонсон занял первое место, то его последний показатель ORDER BY равен 30 (1 + 29).
В идеале, используя «ранжирование + $ ageAdjustment», ему будет 9 (1 + 8).
Является ли это выполнимым? Я ограничен в своих знаниях mysql, но это не кажется выполнимым.
Благодаря
[MySQL сазе] (http://www.w3resource.com/mysql/control-flow-functions/case- operator.php) – amdixon
Интересно, если вы даже заглянули в эту игру? https://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if – rjdown
@rjdown вы должны поставить это как ответ !!! Когда они помещали это в MySQL? –