gpt4 book ai didi

mysql - 可以用更简单的语法重写以下 mysql 查询吗?

转载 作者:行者123 更新时间:2023-11-30 00:51:42 25 4
gpt4 key购买 nike

我对 mysql 很陌生,我有一个相当复杂的查询,我确信可以缩短或优化该查询。

有没有办法不每次都重复 site = '{$site}' 条件?

或者当我按大小写排序结果时不重复第一个条件?

这个查询可以用更少的字重写吗?

SELECT * FROM {$table} WHERE

(site = '{$site}' AND (id LIKE '%bwm%' OR id LIKE '%merc%'))

OR

(site = '{$site}' AND (desc1 LIKE '%new%' OR desc2 LIKE '%smok%'))

ORDER BY CASE

WHEN (site = '{$site}' AND (id LIKE '%bwm%' OR id LIKE '%merc%')) THEN 1

ELSE 2 END

LIMIT 50

最佳答案

试试这个:

SELECT * 
FROM {$table}
WHERE
site = '{$site}'
AND (
id LIKE '%bwm%' OR id LIKE '%merc%'
OR desc1 LIKE '%new%' OR desc2 LIKE '%smok%'
)
ORDER BY
CASE WHEN (id LIKE '%bwm%' OR id LIKE '%merc%') THEN 1
ELSE 2
END
LIMIT 50

site = '{$site}'order by 子句中不是必需的,因为 WHERE 子句会过滤掉不符合条件的行不满足条件 site = '{$site} - 换句话说,所有选定的行都来自此网站 {$site}

关于mysql - 可以用更简单的语法重写以下 mysql 查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20921956/

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