使用多个OR的查询结果不是OR的顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用多个OR的查询结果不是OR的顺序相关的知识,希望对你有一定的参考价值。

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

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

...(为简洁而截断)结果是44和9,即使'leah'是'9'。对此有什么简单的解决方案

答案

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

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

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

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

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

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;

以上是关于使用多个OR的查询结果不是OR的顺序的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

将多个顺序 HBase 查询的结果传递给 Mapreduce 作业

URL 片段中的多个参数

ElasticSearch--请求体查询

JSP实用教程(第三版 清华大学出版社)中遇到的问题和解释

使用具有不同片段字段的相同中继根查询的多个 react-router-relay 路由