gpt4 book ai didi

mysql - ORDER BY 相关性,同时使用参数化值

转载 作者:行者123 更新时间:2023-11-30 23:35:37 29 4
gpt4 key购买 nike

我在网上找到了以下查询:

SELECT company_title
FROM companies
WHERE company_title like '%gge%'
GROUP BY company_title
ORDER BY CASE WHEN company_title like 'gge%' THEN 0
WHEN company_title like '% %gge% %' THEN 1
WHEN company_title like '%gge' THEN 2
ELSE 3
END, company_title
limit 100

效果很好。问题是,我将参数作为值传递,然后失败。所以问题是,如何使用带有参数化值的查询?

一个 mysql 程序员的例子可以是在顶部定义一个变量 SET @what = '%gge%'然后在查询中使用它。

最佳答案

case when 语句移动到选择部分,并通过其别名在 order by 子句中引用它。

SELECT company_title
,CASE WHEN company_title like CONCAT(@param,'%') THEN 0
WHEN company_title like CONCAT('% %',@param,'% %') THEN 1
WHEN company_title like CONCAT('%',@param) THEN 2
ELSE 3
END as relevance
FROM companies
CROSS JOIN (SELECT @param:= ?) as trick_to_set_at_param_in_one_go
WHERE company_title like CONCAT('%',@param,'%')
GROUP BY company_title
ORDER BY relevance, company_title
LIMIT 100

关于mysql - ORDER BY 相关性,同时使用参数化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7625891/

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