具有多个OR的查询结果不是按OR的顺序

时间:2019-04-20 15:49:50

标签: mysql

我要根据从OCR扫描中提取的名称池提取ID列表。列表结果很好,但不是按多个OR的顺序。 ... mysql

SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka'

... (为简洁起见,将其删节。) 结果是44和9,即使'leah'是'9'。 有什么简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

如果您希望结果按名称排序:

SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka' order by name

如果您希望它们按照在OR s中显示的顺序进行排序:

SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka' 
  order by 
    case name 
      when 'Leah' then 1
      when 'Sowaka' then 2
      .....................
    end

答案 1 :(得分:0)

另一种方法是用UNION ALL s创建一个派生表,其中包含名称和一个序数。然后内部连接该表并按顺序排序。

SELECT s.sid
       FROM students s
            INNER JOIN (SELECT 1 ordinal,
                               'Leah' name
                        UNION ALL
                        SELECT 2 ordinal,
                               'Sowoka' name
                        ...) x
                        ON x.name = s.name
       ORDER BY x.ordinal;