sql - 如何用SQL UNION指定订单结果?

标签 sql sql-server-2008 select sql-order-by union

我正在尝试运行以下查询:

select * from (select * from customquestionbank where questionid=6 or secondquestionid=6 
union select * from customquestionbank where questionid=5 or secondquestionid=5 
union select * from customquestionbank where questionid=10 or secondquestionid=10 
union select * from customquestionbank where questionid=11 or secondquestionid=11) Tabled

作为该网站的新手,我还无法发布图像,但结果如下:

questionid -> 5,6 ,10,11

但是,我希望结果以与上面的 select 语句相同的顺序显示。换句话说,questionid=6 首先返回,然后是 5,依此类推。

最佳答案

你不需要所有的联合,只需像这样:

SELECT DISTINCT * 
FROM   customquestionbank 
WHERE  questionid IN ( 6, 5, 10, 11 ) 
        OR secondquestionid IN ( 6, 5, 10, 11 ) 
ORDER  BY CASE 
            WHEN 6 IN ( questionid, secondquestionid ) THEN 0 
            WHEN 5 IN ( questionid, secondquestionid ) THEN 1 
            WHEN 10 IN ( questionid, secondquestionid ) THEN 2 
            WHEN 11 IN ( questionid, secondquestionid ) THEN 3 
          END 

关于sql - 如何用SQL UNION指定订单结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750477/

相关文章:

mysql - 如何使用 mySQL 选择一列具有最大值并按另一列分组的结果?

mysql - 使用 MySQL 提取值

mysql - 在 mysql 中每天删除除 max(timestamp) 之外的所有行

MySQL 如何从两个表中选择数据,以便第二个表中的行覆盖第一个表中的行?

sql - 在批量数据上执行时,使用ALTER提高列的精度是否会影响数据库性能?

c++ - 使用 mysql++ 库时出现问题

sql - 如何更改配置单元中的日期格式?

c# - C# ASP.NET 中的动态业务对象

sql-server-2008 - SELECT 语句按时间过滤

sql - 两表三列变一表四列