gpt4 book ai didi

sql - Mysql "order of operations"问题

转载 作者:行者123 更新时间:2023-11-29 01:48:08 25 4
gpt4 key购买 nike

这是我的情况:我想从数据库中选择所有条目,其中 id = $id。但我希望结果以一定的优先级列出。如果 criteria = $criteria,那么我希望首先显示这些结果。否则,我只想继续显示其余的行。

我的问题是:这能解决我的问题吗?

SELECT field1 WHERE (criteria=$criteria AND id = $id) OR id=$id  LIMIT 5 

查询会先看()吗?如果没有,是否有另一种方法可以在不将其拆分为两个单独的查询的情况下执行此操作?

谢谢,
迈克尔

最佳答案

SELECT  field1
FROM mytable
WHERE id = $id
ORDER BY
criteria = $criteria DESC, id
LIMIT 5

,或者这个:

SELECT  *
FROM (
SELECT field1
FROM mytable
WHERE id = $id
AND criteria = $criteria
ORDER BY
id
LIMIT 5
) q
UNION
FROM (
SELECT field1
FROM mytable
WHERE id = $id
ORDER BY
id
LIMIT 5
) q2
ORDER BY
criteria = $criteria DESC, id
LIMIT 5

如果您在 (id, criteria) 上有索引(按此顺序),后者会更有效。

关于sql - Mysql "order of operations"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229424/

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