我在SQL方面相当缺乏经验,这似乎是一件容易的事,但我不知道如何去做.
基本上我想从表A中选择一行,其中字段"someField"在预定的集合"someSet"中,但我希望它单独查找集合中的每个值.例如,假设"someSet"包含5,6,9,3.我会使用类似这样的查询:
SELECT * FROM A WHERE someField IN (5, 6, 9, 3) LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但是,我希望它首先查找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
Run Code Online (Sandbox Code Playgroud)
显然使用4个查询(理论上是无限查询)并不是很优雅,有没有办法将它变成单个查询?
你可以做
SELECT * FROM A WHERE someField IN (5, 6, 9, 3)
ORDER BY FIELD( someField, 5, 6, 9, 3)
LIMIT 1
Run Code Online (Sandbox Code Playgroud)