SQL ORDER BY 与 CASE 与 UNION ALL

2023-11-26

运行 PostgreSQL(7.4 和 8.x),我认为这是有效的,但现在我遇到了错误。

我可以单独运行查询,它工作得很好,但如果我 UNION 或 UNION ALL 它会抛出错误。

出现错误:(警告:pg_query():查询失败:错误:列“Field1”不存在...按大小写“Field1”W...)

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE condition
AND other_condition
UNION ALL
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

这有效:

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

这也有效:

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE condition
AND other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

如果我省略 ORDER BY 并仅使用 UNION 或 UNION ALL 它也可以工作。

有任何想法吗?


将所有内容放入另一个 SELECT 中:

SELECT * FROM (
  SELECT "Field1" AS field_1, "Field2" AS field_2,
  "Field3" AS field_3, "Field4" AS field_4
  FROM "TableName" 
  WHERE condition
  AND other_condition
  UNION ALL
  SELECT "Field1" AS field_1, "Field2" AS field_2,
  "Field3" AS field_3, "Field4" AS field_4
  FROM "TableName" 
  WHERE yet_another_condition
  AND yet_another_other_condition
) As A
ORDER BY CASE field_1
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

或者,更好的是,在 ORDER BY 中使用别名,因为它是在 UNION 末尾传递的:

  SELECT "Field1" AS field_1, "Field2" AS field_2,
  "Field3" AS field_3, "Field4" AS field_4
  FROM "TableName" 
  WHERE condition
  AND other_condition
  UNION ALL
  SELECT "Field1" AS field_1, "Field2" AS field_2,
  "Field3" AS field_3, "Field4" AS field_4
  FROM "TableName" 
  WHERE yet_another_condition
  AND yet_another_other_condition
  ORDER BY CASE field_1
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
  END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL ORDER BY 与 CASE 与 UNION ALL 的相关文章

随机推荐

  • OData V4 + WebAPI 按枚举的 Int 值过滤?

    OData V4 有枚举支持 但似乎您必须仅按命名空间进行搜索 现在如何通过值而不是文本表示进行搜索 在 odata V3 中 您可以查询 filter Status eq 35 where 35 is Complete在枚举中 即使该字段
  • PostgreSQL 中的混合隔离级别

    如果任何其他会话使用例如可串行化事务 这是否重要 自动提交还是 READ COMMITED 隔离级别 换句话说 当从多个进程 线程 或其他需要注意的事项 访问数据库时 混合隔离级别 和自动提交 是否存在任何危险 请注意 我知道 普通 问题
  • 在 Node.js 上通过 XMPP 连接到 Google Talk

    我尝试过对 Node js 使用各种 XMPP 库 但在连接到 Google Talk 的 XMPP 服务器时遇到问题 我想联系并查看朋友的状态 但我什至无法出门 我有一个通过 Google Apps for Domains 托管的个人域
  • 如何在已 root 的设备上使用文件资源管理器?

    Eclipse 已连接到我已 root 的手机 我可以运行调试会话并查看 LogCat 消息 我还可以看到电话Devices查看在DDMS观点 但是 当我打开File Explorer视图 以相同的视角 我明白了nothing 我可以发誓我
  • 使用 ruby​​ mechanize 捕获超时错误

    我有一个机械化功能可以让我退出网站 但在极少数情况下我会超时 该功能涉及转到特定页面 然后单击注销按钮 有时 当进入注销页面或单击注销按钮时 机械化会遇到超时 代码会崩溃 所以我做了一个小小的救援 它似乎正在工作 如第一段代码所示 def
  • 为什么我的查询不可更新?

    我正在尝试在 Access 中为用户构建可更新的视图 基本上 基础表如下所示 Accounts accountId accountName accountHolder TransactionStatements statementId ac
  • Thread.Sleep(0) 不按描述工作?

    我目前正在阅读这篇优秀的文章关于线程并阅读以下文本 Thread Sleep 0 立即放弃线程当前的时间片 自愿将CPU交给其他线程 我想测试一下 下面是我的测试代码 static string s static void Main str
  • SQL:如何将 Oracle 表中的 100,000 条记录拆分为 5 个块?

    我试图找出将具有 100 万条以上记录的表中的前 100 000 条记录拆分为 5 五 20 000 条记录块以放入文件中的方法 也许某些 SQL 会获取 20 000 条记录的每 5 个块的最小和最大 rowid 或主 id 因此我可以将
  • 自动生成的默认连接字符串与手动添加的连接字符串

    假设我有一个简单的 WPF 应用程序 使用 Entity Framework Code First 创建数据库 连接到它并显示一些数据 从一开始我就不想担心连接字符串 因此在通过 Nuget 添加实体框架引用后 我将获得自动生成的 app
  • .net core 2 API 中是否真正需要 services.AddSingleton

    我只需添加以下内容即可在 NET Core 2 Web API 控制器中访问 appsettings json public class MyController Controller private readonly IConfigura
  • Short 上的一元减号变成了 int?

    在下面的 public class p short mID short dID short id p mID p dID Value 编译器给我错误 错误 21 无法将类型 int 隐式转换为 short 存在显式转换 您是否缺少强制转换
  • C++11 中是否有一个范围类可与基于范围的 for 循环一起使用?

    我发现自己不久前写过这篇文章 template
  • 是否可以同时为 dict 对象中的多个键分配相同的值?

    在 Python 中 我需要一个字典对象 如下所示 a 10 b 20 c 10 d 10 e 20 我已经能够通过结合成功地做到这一点dict update and dict fromkeys 函数如下 myDict myDict upd
  • 带过滤器 data.table 的笛卡尔积

    我正在尝试通过 data table 调用替换 SQL 生成的笛卡尔积 我拥有丰富的资产和价值历史 并且我需要所有组合的子集 假设我有表 a 其中 T 日期 合同 价值 在 SQL 中它看起来像 SELECT a date a contra
  • Ember.js 与 Rails4:浏览器后退按钮崩溃 ember 应用程序

    编辑 问题已解决 去除涡轮连杆这就是您需要做的一切 With a Rails4应用 使用余烬轨道 0 13 0我们遇到浏览器后退按钮不起作用的问题 每次使用后退按钮返回上一个路线时 应用程序都会因以下错误而崩溃 在火狐 24 0a2 上 T
  • 如何在 SWT 表标题中添加“(取消)全选”复选框?

    我有一个 SWT 表 我正在实例化SWT CHECK样式以便在每行旁边显示一个复选框 我的用户请求在表的标题行中添加另一个复选框 以便他们只需单击一下即可选择 取消选择所有行 我看不到任何明显的方法来做到这一点 我只通过 Google 找到
  • 有没有办法将实时照片保存到照片库?

    我将存储的图像和视频文件传递到 PHLivePhoto requestLivePhotoWithResourceFileURLs并得到一个PHLivePhoto我可以显示的对象PHLivePhotoView 但我想知道 一旦我有了PHLiv
  • 如何使用 XPath 从 SELECT 列表中获取最后一个选项 - Scrapy

    我正在使用这个选择器 但它给出了错误 id quantity option last 1 如何选择最后一个选项 我正在使用 Scrapy 框架 你还有一个额外的 之前 制作 XPath 表达式invalid 去掉它 id quantity
  • 背景图像中的淡入淡出

    我有一个网页 使用大图像作为背景 我希望在下载图像后使用 jQuery 来加载图像 基本上就是 bing com 加载其背景图像的方式 这可以用 jQuery 实现吗 如果是的话 有推荐的插件吗 您可以先加载图像 然后在加载完成后将其设置为
  • SQL ORDER BY 与 CASE 与 UNION ALL

    运行 PostgreSQL 7 4 和 8 x 我认为这是有效的 但现在我遇到了错误 我可以单独运行查询 它工作得很好 但如果我 UNION 或 UNION ALL 它会抛出错误 出现错误 警告 pg query 查询失败 错误 列 Fie