SQL - 按优先级设置第一个值?

时间:2010-07-15 03:02:08

标签: mysql sql

我在SQL方面相当缺乏经验,这似乎是一件容易的事,但我不知道该怎么做。

基本上我想从表A中选择一行,其中字段“someField”在预定的集合“someSet”中,但我希望它单独查找集合中的每个值。例如,假设“someSet”包含5,6,9,3。我会使用类似的查询:

SELECT * FROM A WHERE someField IN (5, 6, 9, 3) LIMIT 1

但是,我希望它首先查找5,然后是6,然后是9,如果还没有找到行,则最后查找3。写作单独的查询,它看起来像这样:

SELECT * FROM A WHERE someField = 5 LIMIT 1
(if no results returned)
SELECT * FROM A WHERE someField = 6 LIMIT 1
(if no results returned)
SELECT * FROM A WHERE someField = 9 LIMIT 1
(if no results returned)
SELECT * FROM A WHERE someField = 3 LIMIT 1

显然使用4个查询(理论上是无限查询)并不是很优雅,有没有办法将它变成单个查询?

1 个答案:

答案 0 :(得分:6)

你可以做到

SELECT * FROM A WHERE someField IN (5, 6, 9, 3) 
ORDER BY FIELD( someField, 5, 6, 9, 3) 
LIMIT 1