首页 > 数据库 >【数据库】SQL 错误 [42P10] ERROR SELECT DISTINCT ON expressions must match initial ORDER BY expressions

【数据库】SQL 错误 [42P10] ERROR SELECT DISTINCT ON expressions must match initial ORDER BY expressions

时间:2024-02-04 09:05:32浏览次数:20  
标签:name 42P10 initial DISTINCT 表达式 SQL expressions ORDER SELECT

SQL 错误 [42P10] ,表示在使用 SELECT DISTINCT ON 语句时,表达式必须与初始的 ORDER BY 表达式匹配。这个错误通常发生在你尝试对不同的列进行去重操作时,而这些列并没有在 ORDER BY 子句中明确指定。

为什么会出现这个错误?

当你使用 SELECT DISTINCT ON 语句时,你需要提供一个或多个列名作为表达式,以便在去重时按照这些列进行排序。如果提供的表达式与初始的 ORDER BY 表达式不匹配,就会出现这个错误。

例如,假设我们有一个名为 employees 的表,其中包含以下数据:
idnameagedepartment1Alice30IT2Bob25IT3Carol35Finance4David30IT

如果我们想要查询所有不同年龄的员工,可以使用以下 SQL 语句:

SELECT DISTINCT ON (age) * FROM employees;

但是,如果我们尝试使用以下 SQL 语句:

SELECT DISTINCT ON (name) * FROM employees;

就会出现 SQL 错误 [42P10],因为 name 列没有在 ORDER BY 子句中明确指定。

如何解决这个错误?

使用子查询

要解决这个问题,你需要确保提供的表达式与初始的 ORDER BY 表达式匹配。在你的例子中,你应该使用 age 列作为表达式,而不是 name 列。以下是修复后的 SQL 语句:

SELECT * from (
SELECT DISTINCT ON (age) * FROM employees) as sub order by name;

使用DISTINCT

如果只有一个列需要去重,可以使用DISTINCT

SELECT DISTINCT age,name FROM employees order by name;

标签:name,42P10,initial,DISTINCT,表达式,SQL,expressions,ORDER,SELECT
From: https://www.cnblogs.com/bigleft/p/18005532

相关文章

  • Qt 解决qtcreator工程文件例程报错error: cannot initialize object parameter of typ
    qt下载好并且环境配置完成,kits和qt都已配置完成在qtcreator中,在终端手动编译qmakemake都完全没问题,但是在qtcreator中却报错。即使是新建工程例程都报错。版本qt5.6.0qtcreator4.11.0报错main.cpp:96:error:cannotinitializeobjectparameteroftype‘QWidget’wi......
  • Qt cannot initialize object parameter of type ‘QWidget‘ with an expression of
    报错如图:qtcreator工程文件例程报错error:cannotinitializeobjectparameteroftype‘QWidget’withanexpressionoftype‘tab_workface’问题分析可能因为qtcreator4.11.0basedonqt5.12版本略微冲突导致。。问题解决帮助->关于插件,将ClangCo......
  • 关于ufw 报错ip6tables v1.6.1: can't initialize ip6tables table `filter': Table d
    背景在ubuntuarm版本上安装ufw,设置规则时报错发现报错ip6tablesv1.6.1:can'tinitializeip6tablestable`filter':Tabledoesnotexist(doyouneedtoinsmod?)Perhapsip6tablesoryourkernelneedstobeupgraded.解决办法一.升级ip6tables二.禁用i......
  • 8-Typed Arithmetic Expressions
    静态类型在UntypedArithmeticExpressions里有如下定义:如果一个范式不是一个值,则称此项受阻在这个小型语言里引入两个类型NatBool,来区分布尔值项和数值项断言“项t有类型T”意味着t的运算结果的类型在运行之前就可以被确定,比如succ0;至于iftruethen0elsefals......
  • 3-Untyped Arithmetic Expressions
    导论这一章节和下一章节构建了一套工具服务于仅含布尔值和数值的小型语言这个小型语言非常简单,但是可以承载几个非常重要的概念抽象语法abstractsyntax归纳定义和证明inductivedefinitionsandproofs求值evaluation运行时错误runtimeerror这个小型语言用到以下几......
  • spring扩展点之InitializingBean接口实战
    前言:InitializingBean接口让我们可以干涉bean的初始化过程,算是spring给我们提供的一个扩展点咯,凡是继承InitializingBean接口的类,在创建bean的时候都会执行afterPropertiesSet方法,在这个方法里面我们可以写一些自己的业务逻辑。文章概括实战场景之把配置类java代码化测试答疑实战......
  • NodeJs——error:03000086:digital envelope routines::initialization error
    前言vue2前端项目在服务器上打包报错,发现是高版本的node使用的是OpenSSL3.0,导致的不兼容,所以先临时抛出下环境变量,继续使用老板本的OpenSSL的实现;步骤解决方法exportNODE_OPTIONS=--openssl-legacy-provider具体报错信息root@iZuf6f5trc95ufa25hqb6eZ:/www/wwwroot/ad-cl......
  • springboot 中,ApplicationRunner、InitializingBean、@PostConstruct 执行顺序
    划水。。。ApplicationRunner、InitializingBean、@PostConstruct执行顺序InitializingBean是Spring提供的一个接口,它只有一个方法afterPropertiesSet(),该方法会在容器初始化完成后被调用。ApplicationRunner是SpringBoot提供的一个接口,它有一个方法run(),该方法会在......
  • jenkins运行任务报错Failed to initialize解决
    按照jenkins中文挂网创建了一个创建HelloWorld流水线,使用的示例为Node.js/JavaScript运行jenkins任务后,提示失败,然后在consoleoutput里发现以下错误信息Failedtoinitialize:unabletoresolvedockerendpoint:openD:/ProgramFiles/Git/certs/client/ca.pem:nos......
  • ORA-01033 : ORACLE initialization or shutdown in progress
    1、问题原因   测试环境反馈某一个模块页面一直加载当中,接口没有返回。   紧接着我就找到这个SQL语句在客户端工具navicat.exe上去执行,执行了整整一个半小时没有返回,navicat还关闭不了,最后实在受不了直接杀死navicat的进程。   这个时候重新打开navicat.exe连接......