gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:29:12 26 4
gpt4 key购买 nike

我的数据库中有足球运动员。他们每个人都有一个排名(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com