当前位置: 首页 > 面试题库 >

SELECT UNION和ORDER BY在mysql ..如何?

上官扬
2023-03-14
问题内容

我想从单个表中获取所有行,但是以不同的方式对其进行排序。例如我写

(SELECT * FROM table1
ORDER BY fieldA ASC LIMIT 3
)
UNION
(
SELECT * FROM table1
ORDER BY FieldB DESC
)

它的工作原理是,忽略了(FIELDB DESC)的二阶…有人知道为什么吗?谢谢


问题答案:

UNION操作者执行一个隐含的排序作为联合操作的一部分(IIRC,在键列(多个))。

如果要在结果中进行其他排序,则必须将应用于ORDER BY联合选择。

在您的情况下,您需要某种方式来区分第一个选择项和第二个选择项,以便可以正确地订购联合。像(未经测试的)之类的东西:

(SELECT table1.*, 0 AS TMP_ORDER FROM table1 ORDER BY fieldA ASC LIMIT 3)
UNION
(SELECT table1.*, 1 AS TMP_ORDER FROM table1)
ORDER BY TMP_ORDER ASC, 
CASE WHEN TMP_ORDER = 0 THEN fieldA ELSE 0 END ASC, 
CASE WHEN TMP_ORDER = 1 THEN fieldB ELSE 0 END DESC

这种方法的问题在于,您将在中的第一个查询的一部分中选择三行的重复项UNION(因为列不完全匹配)。

您确定不能使用两个SELECT语句吗?



 类似资料:
  • 我使用的是spring数据,我的DAO看起来像 在上面的代码中,注释行显示了我的意图。spring数据是否可以提供内置功能,使用这样的方法查找所有记录的顺序按某一列与ASC/DESC?

  • 我有实体项目与投标有一对多的关系 型号/项目。JAVA 模型/投标。JAVA 我想获取一个项目的附加出价,出价是按其金额排序的。但它似乎并不像预期的那样起作用 波斯特数据 选择 输出是

  • 问题内容: 我们希望对Seam EntityQuery接口和JPA模型中的2列进行排序。我们如何做到这一点? 问题答案: 如果您正在谈论,则此注释会将(目标实体的)逗号分隔属性的列表作为参数,并相应地对集合进行排序。例如,您的情况。 根据JPA 1.0规范: 9.1.28 OrderBy批注 的注释指定的集合的元素的顺序在点值的关联时的关联检索。 值排序元素的语法为orderby_list,如下所

  • 1)使用的第一个查询...大约用了23秒 目前我修改了查询..这需要大约9秒 我不确定要做的表演是什么?我希望这个查询是快速的..我尝试索引rid和id,但这仍然使查询变得更糟。 下面是表格的详细信息 mza_movie_upload MZA_Movie_Statics

  • 问题内容: 目前,我在声明中正在执行一个非常基本的OrderBy。 问题是“位置”的NULL条目被视为0。因此,所有位置为NULL的条目都出现在具有1,2,3,4的条目之前。例如: 有没有一种方法可以实现以下排序: 问题答案: MySQL具有未记录的语法,可以最后对null进行排序。在列名之前放置减号(-),然后将ASC切换为DESC: 从本质上讲,这与将NULL值最后放置相反,但与相同。 一个很

  • 问题内容: 我正在使用angular-filter中的 groupBy 按对象的date属性对对象数组进行分组。 产生以下内容: 如何从最近的日期开始颠倒顺序?当我打印到控制台时,以我想要的顺序打印阵列: 我还编写了一个自定义过滤器来反转groupBy之后的顺序: 我已经这样申请了: 问题答案: 最近有同样的问题。创建一个对象,但需要一个数组,因此涉及一些时髦。我最终从他们的问题页面直接得到了答案

  • 我试图在我的查询中创建一个orderBy,并对库中的项目进行分页,但不是对整个查询进行排序,而是一页一页地对内容进行排序,因此如果我对desc进行排序,它只工作一页,当我转到下一页时,我可以找到真正不同的值(排序,但与第一页没有关系)。 下面是我的问题:

  • 我有3个元字段:日期(日期格式字符串)、位置和顾问。 设置meta_键时,我可以按日期字段拉入POST和orderby: 然而,我无法用更复杂的meta_query来实现这一点: 基本上,我想拉所有的职位,有一个元开始_日期大于今天的日期和顺序由这些日期。 作为一个旁注-你能在说位置键和仍然按日期键进行元查询搜索吗? 任何帮助都很感激...这是我第一次尝试用meta订购,并且找到了一些好的帖子,但