如何按条件以不同的顺序联合所有

Posted

技术标签:

【中文标题】如何按条件以不同的顺序联合所有【英文标题】:How to do union all with different order by conditions 【发布时间】:2014-04-10 11:50:07 【问题描述】:

我有一个表格,其中包含类似的数据

我想要表中的所有记录,但具有 EnquiryStatus=1 且按 LastAttendendedDate 排序的记录应位于顶部,其余记录应位于这些记录之后。我尝试使用 where 条件选择两次,并尝试将所有这些联合起来,但是由于该联合都不允许我以不同的方式排序。我可以在 c# 中通过将数据检索为两个表并将它们合并为单个表来实现。但我想要它在 sql..

编辑:

我想要类似的东西

Select * From EnquiryMaster A Where  A.BranchID=16 and EnquiryStatus=1  ORDER BY A.CreatedDate Desc     
UNION ALL
Select * From EnquiryMaster A Where  A.BranchID=16 and EnquiryStatus in(0,2,3) ORDER BY EnquiryStatus,A.CreatedDate Desc

【问题讨论】:

不要发布图片,链接会死掉,示例数据很难复制/粘贴。如果您改为提供带有此数据的sql-fiddle,将会很有帮助。要创建它,您可以使用那里的“Text-To-DDL”功能。 【参考方案1】:
SELECT * FROM TABLE_NAME WHERE ORDER BY CASE WHEN EnquiryStatus='1' THEN LastAttendendedDate END DESC 

你可以在sql中使用这个。

【讨论】:

我想要所有的记录不仅只有 1【参考方案2】:

试试这个

select * from your_table
order by case when EnquiryStatus=1 then LastAttendendedDate end DESC

【讨论】:

我想要完全一样,但按 desc 排序 出现错误 关键字“desc”附近的语法不正确。

以上是关于如何按条件以不同的顺序联合所有的主要内容,如果未能解决你的问题,请参考以下文章

查询排序顺序问题

如何正确解组不同类型的数组?

BigQuery:对具有不同字段顺序的重复字段进行联合

影视投资方式

mysql中的联合查询

Shell脚本应用