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

在mysql中使用union和order by子句

凤扬
2023-03-14
问题内容

我想在MySQL查询中通过Union使用order。我正在根据基于距离的表从不同的标准中获取不同类型的记录,该表基于距离在我的网站上进行搜索。第一个选择查询返回与精确位置搜索有关的数据。第二个选择查询返回与距搜索位置5公里以内的距离有关的数据。第三个选择查询返回与距搜索位置5-15公里之内的距离有关的数据。

然后,我使用union合并所有结果,并在带有分页的页面上显示。在适当的标题下,例如 “精确搜索结果”“ 5公里内的结果”

现在我想基于id或add_date对结果进行排序。但是,当我在查询末尾添加order
by子句时(query1联合查询2联合查询3由add_date排序)。它对所有结果进行排序。但是我想要的是应该在每个标题下进行排序。


问题答案:

您可以通过为每个选择添加一个名为rank的伪列来执行此操作,在按照其他条件进行排序之前,可以首先对其进行排序,例如:

select *
from (
    select 1 as Rank, id, add_date from Table 
    union all
    select 2 as Rank, id, add_date from Table where distance < 5
    union all
    select 3 as Rank, id, add_date from Table where distance between 5 and 15
) a
order by rank, id, add_date desc


 类似资料:
  • 问题内容: 我有两个表:-表a,表b。 表一 - -ID - - 表b - -ID - - 我必须在没有 UNION 命令的情况下获得这样的输出: - - ID - - - 注意:我有一个联合的解决方案:- 我需要替代方案。 请专家建议。 问题答案: 为此,我们需要另一个具有(至少)2行的表: 然后,如果我们只想要一个查询,则可以使用( 这很有趣,请不要在生产中使用 ,这就是为什么要使用 ): 在

  • 问题内容: 我有两张桌子。 我这样查询: 我使用UNION是因为如果用户在第一个表和第二个表中都存在,我想为每个用户获取不同的值。 例如: 如果peter在任何一张桌子上,我应该一次获得名称,因为它在两个桌子上都存在。 我仍然从第一张桌子得到一排,从第二张桌子得到第二排。怎么了? 任何帮助表示赞赏。 问题答案: 您的SQL有两个问题: (这是 不是 问题,但应考虑)使用过,而不是表,您创建性能噩梦

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

  • 问题内容: 我想从单个表中获取所有行,但是以不同的方式对其进行排序。例如我写 它的工作原理是,忽略了(FIELDB DESC)的二阶…有人知道为什么吗?谢谢 问题答案: 的操作者执行一个隐含的排序作为联合操作的一部分(IIRC,在键列(多个))。 如果要在结果中进行其他排序,则必须将应用于联合选择。 在您的情况下,您需要某种方式来区分第一个选择项和第二个选择项,以便可以正确地订购联合。像(未经测试

  • 我有两个问题。两者都很好用: 第二个查询: 联合本: 工作正常,但我想添加左联接: DoSend工作...#1222-使用的SELECT语句具有不同的列数 你能帮我把这件事办好吗?

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