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

SQL UPDATE语句

沃宇
2023-03-14
问题内容

我有此查询返回我的ID

select id, default_code from product_product ou
where (select count(*) from product_product inr
where inr.default_code = ou.default_code) > 1 and ou.active = false

但我收到此语句的语法错误

update product_product ou
where (select count(*) from product_product inr
where inr.default_code = ou.default_code) > 1 and ou.active = false set uo.default_code = uo.default_code || 'A';

ERROR:  syntax error at or near "where"
LINE 2:     where (select count(*) from product_product inr

我如何正确更新从第一条语句中检索到的ID


问题答案:

正确的:

update
    product_product ou
set
    default_code = ou.default_code || 'A'
from
    (
        select default_code
        from product_product
        group by default_code
        having count(*) > 1
    ) inr
where
    not ou.active
    and ou.default_code = inr.default_code


 类似资料:
  • org.springframework.jdbc.object.SqlUpdate类提供表示SQL更新的可重用操作对象。 Class 声明 (Class Declaration) 以下是org.springframework.jdbc.object.SqlUpdate类的声明 - public abstract class SqlUpdate<T> extends SqlOperation

  • org.springframework.jdbc.object.SqlUpdate类提供表示SQL更新的可重用操作对象。 Class 声明 (Class Declaration) 以下是org.springframework.jdbc.object.SqlUpdate类的声明 - public abstract class SqlUpdate<T> extends SqlOperation

  • sqlupdate 读取 MySQL 的表定义 SQL 文件,然后与现有数据库中进行比较,然后生成更新数据库结构的 SQL 语句。 sqlupdate v1.6.5 - Copyright (C) Joel Yliluoma (http://iki.fi/bisqwit/)Usage: sqlupdate [options] >changes.sql (Creates an up

  • 主要内容:使用 goto 退出多层循环,使用 goto 集中处理错误Go语言中 goto 语句通过标签进行代码间的无条件跳转,同时 goto 语句在快速跳出循环、避免重复退出上也有一定的帮助,使用 goto 语句能简化一些代码的实现过程。 使用 goto 退出多层循环 下面这段代码在满足条件时,需要连续退出两层循环,使用传统的编码方式如下: 代码说明如下: 第 10 行,构建外循环。 第 13 行,构建内循环。 第 16 行,当 y==2 时需要退出所有的 for

  • 主要内容:基本写法,跨越 case 的 fallthrough——兼容C语言的 case 设计Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch。 相对于C语言和 Java 等其它语言来说,Go语言中的 switch 结构使用上更加灵活,语法设计尽量以使用方便为主。 基本写

  • Go 语言循环语句 Go 语言的 goto 语句可以无条件地转移到过程中指定的行。 goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。 但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。 语法 goto 语法格式如下: goto label; .. . label: statement; break 语句

  • Go 语言循环语句 Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。 for 循环中,执行 continue 语句会触发for增量语句的执行。 语法 continue 语法格式如下: continue; continue 语句流程图如下: Go 语言循环语句

  • Go语言循环语句 Go 语言中 break 语句用于以下两方面: 用于循环语句中跳出循环,并开始执行循环之后的语句。 break在switch(开关语句)中在执行一条case后跳出语句的作用。 语法 break 语法格式如下: break; break 语句流程图如下: Go语言循环语句