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 的相关文章

  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 如何将可视选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

    使用 Vim 我尝试将在可视模式下选择的文本通过管道传输到 UNIX 命令 并将输出附加到当前文件的末尾 例如 假设我们有一个 SQL 命令 例如 SELECT FROM mytable 我想做如下的事情
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • 如何将压缩文件导入 Postgres 表

    我想将一个文件重要到我的 Postgresql 系统 特别是 RedShift 中 我发现了一个允许导入 gzip 文件的副本的争论 但我尝试包含在系统中的数据提供者仅生成 zip 格式的数据 有内置的 postgres 命令用于打开 zi
  • wal_keep_segments 为什么是最小值而不是最大值?

    根据docs http www postgresql org docs current static runtime config replication html wal keep segments integer 指定过去日志的最小数量
  • 单独的逗号分隔值并存储在sql server的表中

    我有一个存储过程 它将逗号分隔的值作为输入 我需要将其分开并需要将其作为单独的行存储在表中 令 SP 的输入为 Rule ID ListType ID Values 1 2 319 400 521 8465 2013 我需要将它存储在一个名
  • 初级SQL部分:避免重复表达式

    我对 SQL 完全陌生 但我们可以说StackExchange 数据浏览器 https data stackexchange com 我只想按信誉列出前 15 位用户 我写了这样的内容 SELECT TOP 15 DisplayName I
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • PESSIMISTIC_WRITE 是否锁定整个表?

    只是为了确保我正确理解事情是如何运作的 If I do em lock employee LockModeType PESSIMISTIC WRITE 它会仅阻止该实体吗 employee 或整个表Employees 如果重要的话 我正在谈
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 比较两个 postgres 转储文件

    如何比较 postgres 转储文件 我有两个转储文件 dump1 和 dump2 我想比较这两个转储文件 任何帮助将不胜感激 谢谢 如果使用 Windows 则可以使用 Beyond Compare 如果使用 linux fedora 则
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • 即使删除了某些行,使用种子值进行随机排序也会再次返回相同的集合吗?

    我正在编写一个分页 API 通过设置随机种子值来给出随机结果 除非用户想要洗牌结果 否则结果将是相同的 但如果用户想要洗牌 我将重新创建种子值 以便它将返回一组不同的记录 我的问题是 如果我从数据库中删除一条记录 即使种子相同 由于元素长度

随机推荐

  • 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