postgresql - 为什么我不能通过 select distincts 使用相等顺序?
问题描述
假设我有
select distinct id, flavor from bageltown order by id, flavor
这行得通。
但如果我说
select distinct id, flavor from bageltown order by id, flavor='lox' desc, flavor
我收到一个元素不存在于 distinct 子句中的错误。
当然,这可以通过编辑查询来解决,如下所示:
select distinct id, flavor='lox', flavor from bageltown order by id, flavor='lox' desc, flavor
但我想知道 - 为什么需要将布尔列添加到我的输出中?
解决方案
DISTINCT
(而不是)的目的DISTINCT ON
是删除结果表中的重复行。在您的特定情况下,这可能不是问题(因为您已经id
在结果表中),但是如果您按排序flavor='lox'
并且flavor='lox'
不是结果列,则不能保证没有代表某些行(如果它不是为了删除重复项)同时具有flavor='lox'
and flavor<>'lox'
,目前尚不清楚应该如何对它们进行排序。如果您将flavor='lox'
和'flavor<>'lox'
视为单独的行,那么您将回到表中有重复的行。
推荐阅读
- python - 如何强类型零参数原语
- wordpress - 如何在 Wordpress 中删除小部件区域
- security - 向 ACL 添加限制会在 Jackrabbit Oak 中的查询产生空结果
- javascript - 是否有一种有效的方法可以将 JavaScript 数组从 .js 文件传递到 .html 文件以使用 Plotly 进行绘图?
- webserver - 添加代码以从 dht11 读取数据时,Micropython 网络服务器停止工作
- python - Pandas GroupBy 和日期范围内的平均值
- javascript - 错误问题无法读取未定义的属性“切片”
- javascript - Javascript switch 语句仅触发第一种情况
- excel - 使用 Application.WorksheetFunction.MRound 和 Cells.Formula
- c - 如何在C中使用wiringpi确定按钮按下持续时间