php - 你能在MYSQL语句中做if/else逻辑吗?

标签 php mysql

我的数据库中有足球运动员。他们每个人都有一个排名(1 是最好的),我在 MYSQL 查询中即时计算他们的年龄。该查询使用他们的排名加上他们的年龄进行 ORDER BY。所以我首先有这个...

$rankquerytext="ranking + age";

然后我有查询...

$sql = "SELECT *, FLOOR(DATEDIFF(CURDATE(), born) / 365.25) AS age 
    FROM players
    ORDER BY " . $rankquerytext . "";

这很好用。但是,我想更具体一点,而不是仅仅将他们的年龄添加到他们的排名中。例如,我更愿意以某种方式在 MySQL 查询中或就在它之前执行 if/else,例如...

if (age < 25) {
$ageadjustment=-5;
} else if (age >= 29) {
$ageadjustment= 8;
} else {
$ageadjustment=0;
}

然后我想在他们的排名中添加“$ageadjustment”,而不是“age”。

例如,当使用“排名 + 年龄”时,如果 Calvin Johnson 排名第一,那么他最终的 ORDER BY 数字是 30 (1 + 29)。

理想情况下,使用“ranking + $ageadjustment”,他应该是 9 (1 + 8)。

这可行吗?我的 mysql 知识有限,但这似乎不可行。

谢谢

最佳答案

您可以使用 CASE运算符如下所示:

$rankquerytext = "ranking + adj";

$sql = "SELECT *,
 CASE WHEN FLOOR(DATEDIFF(CURDATE(), born) / 365.25) < 25 THEN -5 
 WHEN FLOOR(DATEDIFF(CURDATE(), born) / 365.25) >= 29 THEN 8
 ELSE 0 
 END AS adj 
 ORDER BY " . $rankquerytext;

关于php - 你能在MYSQL语句中做if/else逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633193/

相关文章:

php - 如何让这个登录系统更安全

mysql - 飞行 route 连接超时

php - 仅从 URL 中检索类别 ID

php - 使用 php 在文本文件中搜索短语/单词

mysql - 在具有来自不同表的多个值的查询子句中使用 LIKE %%

MYSQL 如果没有结果我需要一些默认值

php - 是否可以插入一行,但前提是值尚不存在?

mysql - 按两个不同表中两个日期时间字段的最大值排序

php - DynamoDB 与 PHP,update_item 错误

php - 如何将表字段映射到学说实体中不同名称的变量?