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

通过联合使用不同的顺序

田博易
2023-03-14
问题内容

我想写一个查询

    select top 10 * from A
    order by price
    union
    select top 3 * from A 
    order by price

或诸如此类

    select top 10 * from A
    where name like '%smt%'
    order by price
    union
    select top 3 * from A
    where name not like '%smt%'
    order by price

你能帮我么?


问题答案:

这应该工作:

SELECT * 
FROM (SELECT TOP 10 A.*, 0 AS Ordinal
      FROM A
      ORDER BY [Price]) AS A1

UNION ALL

SELECT * 
FROM (SELECT TOP 3 A.*, 1 AS Ordinal
      FROM A
      ORDER BY [Name]) AS A2

ORDER BY Ordinal

MSDN

在使用UNION,EXCEPT或INTERSECT运算符的查询中,仅在语句末尾才允许使用ORDER BY。仅当您在顶级查询中 而不是子查询中
指定UNION,EXCEPT和INTERSECT时,此限制才适用。

编辑 :强制您需要将顺序应用于ORDER BY外部查询的顺序。我已经向两个查询添加了一个常量值列。



 类似资料:
  • 我在表格的列中有。状态为,,,,。我还有一个字段。我想根据日期对,,进行排序,它们将首先排序,但将基于日期和之后的状态,并且始终在最后。 我已经做了什么 但这将导致状态的优先级,所以它将首先按状态排序,然后按日期排序。 我想要的输出 原始mysql查询或雄辩的查询都可以。谢谢

  • 我有一个PHP文件,点击提交按钮,另一个PHP脚本正在执行。在第二个PHP脚本中,正在执行一个外壳脚本,其中正在与另一台服务器进行SSH连接。 我遇到的问题是,到另一台服务器的SSH连接只能由特定用户完成。但是,PHP脚本是由www数据执行的,因此我无法将用户更改为需要ssh连接的用户,因为每次都需要密码。 我还尝试从第一个PHP文件执行shell脚本,但仍然没有成功。 我的操作系统是UBUNTU

  • 问题内容: 我有一个联合查询,它从两个不同的总体中获取计数。如何强制结果按查询中写入的顺序而不是升序/降序返回? 我希望第一个结果始终作为第一行返回。这可能吗? 问题答案: 您必须使用ORDER BY子句指定订单。在您的示例中,您可以执行以下操作:

  • 我有太空人: id 姓名 年龄 有两个索引: 和数据: 我需要按姓名和年龄选择的人,而不是一些价值。例如,我想选择所有有年龄的“亚历克斯” 我尝试执行查询: 但是得到结果 如何对名称和年龄索引部分使用不同的迭代器?

  • Netty 3中有一个OrderedMemoryAwareThreadPoolExecutor,文档中描述了如何更改排序键:http://docs.jboss.org/netty/3.2/api/org/jboss/netty/handler/execution/OrderedMemoryAwareThreadPoolExecutor.html 在Netty 4中,这是用EventExecutor

  • 我有两个数据。表X和表Y。 列 X: Y 中的值列: 创建两个data.tables: 我设置了 X 和 Y 的键: 现在,我尝试通过X中的< code>id和Y中的< code>ID来连接X和Y: All引发错误,指出参数中的列名无效。 我查阅了data.table的手册,发现< code>merge函数不支持< code>by.x和< code>by.y参数。 如何在不更改列名的情况下通过不同