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

可写的公用表表达式和多个插入语句

轩辕晔
2023-03-14
问题内容

如何在有效的Postgres SQL查询中编写以下内容:

with foo as (select * from ...)
insert into bar select * from foo
insert into baz select * from foo

问题答案:

如果您希望在一条语句中全部使用,则可以使用CTE:

with foo as (
      select * from ...
     ),
     b as (
      insert into bar
          select * from foo
          returning *
     )
insert into baz
    select * from foo;

笔记:

  • 您应在列列表中添加insert
  • 您应该指定列名 明确select *。这很重要,因为两个表中的列可能不匹配。
  • 我总是在CTE中returningupdate/ insert/delete一起使用。这是正常的用例-例如,您可以从插入中获取序列ID。


 类似资料:
  • 问题内容: 在MSSQL 2008中使用多个CTE时,通常用逗号将它们分开。 但是,当我在Teradata环境中尝试此操作时,语法出现错误。 适用于MS SQL: 现在,尝试使用Teradata语法: 语法错误,应在’,’和’RECURSIVE’关键字之间使用名称或Unicode分隔标识符之类的名称。 第二次尝试(不使用RECURSIVE多次) 不支持多个WITH定义。 问题答案: Teradat

  • 需要一些帮助来构建Regex公式以验证输入字符串。 以下是我到目前为止使用的公式,但有些部分无法按要求工作。 要求:- 可接受的输入字符串 强制字符长度介于 8,16 之间 必需的字符串内容字母数字,最小值为 1 个字母 -- 样品: 或字符串如下 不可接受的带前缀的输入字符串

  • 问题内容: 我首先看一下Oracle的多表插入(总体上我对SQL还是很陌生),但我不太理解语句结尾处的目的/需求。 对于单表,据我了解,可以使用子句或子查询,但不能同时使用。有人可以在本声明结尾解释该条款的重要性吗?我在网上看过,但没有找到明确的答案。 问题答案: 该选择用于确定变量 prod_category 的值,该变量用于

  • 问题内容: 嘿,我有一个连接两个不相关表的Junction表。两个表都有。我需要使用不同的值从每个表中选择,例如,这就是我的看法: 我见过的所有示例都使用一条语句,但是两个表具有相同的值,在这种情况下,它们不是。 问题答案: 试试这个查询:

  • 我们在前面的小节中,已经学习了变量和运算符。有了这些前置知识,我们就可以学习表达式、语句和块了。 运算符可用于构建表达式,表达式可以进行值的计算,它是语句的核心组成部分;而语句是指令式编程语言中最小的独立元素;多条语句又可以组成语句块。本小节我们将学习表达式的概念和常用分类,也将了解到什么是语句和块。 1. 表达式 1.1 概念 表达式,是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等

  • rust是一个基于表达式的语言,不过它也有语句。rust只有两种语句:声明语句和表达式语句,其他的都是表达式。基于表达式是函数式语言的一个重要特征,表达式总是返回值。 声明语句 rust的声明语句可以分为两种,一种为变量声明语句,另一种为Item声明语句。 变量声明语句。主要是指let语句,如: let a = 8; let b: Vec<f64> = Vec::new(); let (a, c)