gpt4 book ai didi

mysql - 带有 COUNT 或 SUM 问题的 SQL CASE

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:01 30 4
gpt4 key购买 nike

我尝试了一些选项,但它根本不起作用或不符合我的需求。

它是关于以下 SQL(这不起作用,但最接近我需要的):

SELECT CASE WHEN r.`content` LIKE '% word1 %' 
then 1
else 0
END AS `val1`
, CASE WHEN r.`content` LIKE '% word2 %'
then 1
else 0
END AS `val2`
, CASE WHEN r.`city` LIKE 'cityname'
then 1
else 0
END AS `val3`
, (`val1`+`val2`+`val3`) AS `reference_value`
FROM `testimonials` as r
WHERE `accepted`='1'
ORDER BY `reference_value`

所以基本上,得分最高的条目排在最前面。当 3 个案例匹配时 reference_value 将有 3 分。代码是动态的,因此它也可以是 4、5、6、7 或更多个 CASE。

我希望这对您有所帮助。提前致谢。

最佳答案

您不能在同一 SELECT 列表中重复使用计算值(如查询中的 val1)。

使用子查询,或重复 CASE 来求和它们的值。在这种情况下,我的偏好是子查询,但实际需求和实际执行计划(解释)可以随时覆盖它。

SELECT
val1,val2,val3,
val1+val2+val3 as reference_value
FROM (
SELECT CASE WHEN r.`content` LIKE '% word1 %'
then 1
else 0
END AS `val1`
, CASE WHEN r.`content` LIKE '% word2 %'
then 1
else 0
END AS `val2`
, CASE WHEN r.`city` LIKE 'cityname'
then 1
else 0
END AS `val3`
FROM `testimonials` as r
WHERE `accepted`='1'
) TMP
ORDER BY `reference_value`

关于mysql - 带有 COUNT 或 SUM 问题的 SQL CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583413/

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