这是我的情况:我想从数据库WHERE id = $ id中选择所有条目.但我希望结果列在一定的优先级.如果,criteria = $ criteria,那么我希望首先显示这些结果.否则,我只想继续显示其余的行.
我的问题是:这会解决我的问题吗?
SELECT field1 WHERE (criteria=$criteria AND id = $id) OR id=$id LIMIT 5
Run Code Online (Sandbox Code Playgroud)
查询会首先查看()吗?如果没有,是否有另一种方法可以做到这一点,而不将其分成两个单独的查询?
谢谢,
迈克尔
SELECT field1
FROM mytable
WHERE id = $id
ORDER BY
criteria = $criteria DESC, id
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
, 或这个:
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
Run Code Online (Sandbox Code Playgroud)
如果你有一个索引(id, criteria)
(按此顺序),后者更有效.