postgresql插入多个选择

2024-03-19

如果这是我插入一条记录的方式:

insert into fund_data 
    (fund_entries_id
     ,fund_val
     ,bbg_pulls_id)
(select fe.id, 1,20
    from
        fund_entries fe
    where
         fe.company_id = 399
        and fe.fiscal_prd_end_date = '2016-09-30')

这就是我插入另一条记录的方式:

insert into fund_data 
    (fund_entries_id
     ,fund_val
     ,bbg_pulls_id)
(select fe.id, 567,20
    from
        fund_entries fe
    where
         fe.company_id = 5
        and fe.fiscal_prd_end_date = '2016-09-28')

如何将它们插入到同一个插入语句中?请注意,实际上,会有数十万个插入,而不仅仅是两个,因此效率非常重要。

换句话说,插入中从记录到记录company_id, fund_val, fiscal_prd_end_date改变。bbg_pulls_id保持不变。但fund_entries_id是通过找到的fiscal_prd_end_date in the fund_entries每个插入的表。

我的桌子看起来像这样:

CREATE TABLE public.fund_data
(
    id bigint NOT NULL DEFAULT nextval('fund_data_id_seq'::regclass),
    fund_entries_id integer NOT NULL,
    fund_val numeric,
    bbg_pulls_id integer,
    wh_calc_id integer,
    CONSTRAINT fund_data_pkey PRIMARY KEY (id),
    CONSTRAINT fund_data_fund_entries_id_bbg_pulls_id_key UNIQUE (fund_entries_id, bbg_pulls_id),
    CONSTRAINT fund_data_fund_entries_id_wh_calc_id_key UNIQUE (fund_entries_id, wh_calc_id),
    CONSTRAINT fund_data_bbg_pulls_id_fkey FOREIGN KEY (bbg_pulls_id)
        REFERENCES public.bbg_pulls (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fund_data_fund_entries_id_fkey FOREIGN KEY (fund_entries_id)
        REFERENCES public.fund_entries (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fund_data_wh_calc_id_fkey FOREIGN KEY (wh_calc_id)
        REFERENCES public.wh_calc (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
        DEFERRABLE,
    CONSTRAINT fund_data_check CHECK ((wh_calc_id IS NULL) <> (bbg_pulls_id IS NULL)),
    CONSTRAINT fund_data_check1 CHECK (NOT (wh_calc_id IS NULL AND fund_val IS NULL))
)

CREATE TABLE public.fund_entries
(
    id integer NOT NULL DEFAULT nextval('fund_entries_id_seq'::regclass),
    fiscal_prd_end_date date NOT NULL,
    company_id integer NOT NULL,
    ern_dt_id integer NOT NULL,
    CONSTRAINT fund_entries_pkey PRIMARY KEY (id),
    CONSTRAINT fund_entries_company_id_fiscal_prd_end_date_key UNIQUE (company_id, fiscal_prd_end_date),
    CONSTRAINT fund_entries_ern_dt_id_key UNIQUE (ern_dt_id),
    CONSTRAINT fund_entries_company_id_fkey FOREIGN KEY (company_id)
        REFERENCES public.company (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fund_entries_ern_dt_id_fkey11 FOREIGN KEY (ern_dt_id)
        REFERENCES public.ern_dt (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

我目前正在考虑使用WITH用于选择和访问的语句fund_entries_id来自WITH查询。不确定这是最干净的方法。

或者也许是这样的:

但不确定如何实施。

Thanks!


您可以准备要插入的数据CTE, https://www.postgresql.org/docs/current/static/queries-with.html e.g.:

with rows_to_insert(fund_val, bbg_pulls_id, company_id, fiscal_prd_end_date) as (
values
    (  1, 20, 399, '2016-09-30'::date),
    (567, 20,   5, '2016-09-28')
)

insert into fund_data (fund_entries_id, fund_val, bbg_pulls_id)
select fe.id, ri.fund_val, ri.bbg_pulls_id
from fund_entries fe
join rows_to_insert ri using (company_id, fiscal_prd_end_date)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql插入多个选择 的相关文章

  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • SQL Group BY,每个组的前 N ​​个项目

    我有一个 SQL 查询 可以获取给定商店中销量最高的 5 件商品 SELECT TOP 5 S UPCCode SUM TotalDollarSales FROM Sales S WHERE S StoreId 1 GROUP BY S U
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为
  • 在存储过程结束时显式删除本地临时表有什么好处?

    考虑以下伪 T SQL 代码 由存储过程执行 CREATE TABLE localTable
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累
  • 案例陈述以确定我是否应该结合

    我目前想做某种条件联合 给出以下示例 SELECT age name FROM users UNION SELECT 25 AS age Betty AS name 假设我只想在 用户 计数 gt 2 时合并第二个语句 否则不合并两者 总之
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • ORA-01749: 您不能向自己授予/撤销权限

    我正在运行以下查询RATOR MONITORING授予引用权限的架构RATOR MONITORING CONFIGURATION SMSC GATEWAY表到RATOR MONITORING schema GRANT REFERENCES
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • PSQLException:大对象不能在自动提交模式下使用

    我正在使用 WildFly 10 Java EE JPA 和 Hibernate 最近我将我的应用程序从 MySQL 迁移到 PostgreSQL 在使用 MySQL 时 我会使用以下方法将图像存储在我的实体中 Lob Basic fetc
  • 多级排序

    我有一个表 其中包含一些记录 其中包含名称 评级等字段 我首先想要根据评级将结果限制为 20 进行排序 然后在此结果集上想要进一步应用基于名称的排序 我知道要排序我们需要使用像这样的查询 Select from table order by
  • PHP json_encode 反斜杠和数组名称的问题

    我正在将一些 postgresql 数据转换为 PHP json encode 但我遇到了一些问题 json encode 将 BackSlash 添加到我的数据中的所有斜杠中 在描述中出现段落标记的结束 我认为是因为反斜杠问题 我不希望我
  • DB2 - 如何在 IBM System i Access for Windows GUI Tool 中使用参数运行即席选择查询

    我想使用我声明的变量在 IBM System I Navigator tool for DB2 中运行一些临时选择语句 例如 在 SQL Server 世界中 我可以在 SQL Server Management Studio 查询窗口中轻
  • PLSQL 中的时区转换

    我需要将系统日期和时间转换为特定时区 例如东部时间 我无法假设我当前的时区 如何在plsql中转换它 请帮我 假设你有一个TIMESTAMP WITH TIME ZONE 例如systimestamp 您可以使用AT TIME ZONE句法
  • Heroku 上的“PG::错误 - 数字字段溢出”

    我构建了一个应用程序来查询 Google Analytics 的过去 7 天的数据 一切都在本地进行 在 Heroku 上 该过程运行顺利 直到它尝试获取今天日期的数据 然后我收到以下错误 2012 10 29T02 32 02 00 00
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • PostgreSQL:循环直到条件为真

    我正在尝试编写一个查询 该查询从指定值开始 循环 数据库 直到条件为真 例如 假设我在 TABLE 示例中有以下条目 id parent cond 1 True 2 1 False 3 1 False 4 2 False 我想要一个以 4

随机推荐

  • C++ 字符串流跳过一个字符

    我有一个文件 第一行显示为 gt FileName txt 我的目标是读取这一行 并将 FileName txt 保存到名为 name 的变量中 所以我有 ifstream file File opening stuff string li
  • 动态 dll 加载和 googletest

    我有几个基于 MFC 的项目 DLL 我想在里面添加一些 GTest GMock 测试 我需要以最小的努力做到这一点 所以我的计划是 将测试文件添加到每个库并将其链接到 gmock lib 准备一个可执行文件 它将使用最少的 main 动态
  • 动态数据 - 创建友好的列名称?

    我使用实体框架模型创建了一个动态数据项目 效果很好 但是 现在它显示了我的所有数据库表以及数据库列名称 这并不总是最友好的 例如address line 1 我如何才能提供这些将显示给最终用户的更友好的列标题 您应该使用元数据类来添加附加注
  • 没有权限在Windows上删除SQLite3开发数据库Rails 5.0

    我正在尝试在 Windows 上重置 Rails 5 0 项目的开发数据库 但是当我运行时 与 rake db drop 相同 rails db drop 我收到以下错误 Errno EACCES 权限被拒绝 unlink internal
  • sql避免笛卡尔积

    我对 SQL 还很陌生 并且正在努力处理查询 使用 Access FWIW 我在 Google 上搜索过 StackOverflow 但还没有看到这种确切的场景 这也可能是因为我不知道正确的搜索词 我有两个非常简单的表 其中包含相似的数据
  • Sql索引与全表扫描

    在编写复杂的 SQL 查询时 我们如何确保使用正确的索引并避免全表扫描 我通过确保只加入具有索引 主键 唯一键等 的列来做到这一点 这够了吗 向数据库询问查询的执行计划 然后从那里继续 不要忘记对 where 子句中出现的列也建立索引
  • 自动加载器导致找不到类

    我正在尝试在我的 WordPress 项目中包含一个自动加载器 更具体地说 我正在开发一个插件 其中包含所有类的 Classes 目录 我希望这些类可以通过命名空间访问到我的 WordPress 项目根目录和子文件 文件夹 我觉得我的com
  • iPhone Chrome 上的 ICS 文件下载失败并显示“未知文件类型”

    我有一个 php 脚本 可以为移动网络应用程序自动生成 ics 文件 在我的 Win7 桌面上使用 Chrome ics 文件下载得很好 Outlook 也喜欢它 在我的 iPhone 上使用 Safari ics 文件会按预期打开日历应用
  • 模拟 Fn+F11 按键

    Can you tell me how I can simulate key presses Fn F11 on a laptop Do I have to write a driver or something like that 平台是
  • 如何将浮动操作按钮带到应用程序之外并使其作为可见、可移动和可点击的后台服务运行?

    所以我需要我的应用程序有一个开关 当它打开时 应该创建一个 FAB 在主活动 应用程序关闭后 这应该像后台服务一样在所有其他应用程序上运行 因此 无论我触摸 FAB 的任何地方 它都应该是可点击 可移动的 并且应该覆盖所有应用程序 看看以下
  • 自定义 Django Rest 解析器

    这是我的代码 class lista libros APIView def post self request format None format None cadena64 request data xmlfile base64 b64
  • 如何通过将文件/文件夹“拖放到”脚本图标上来将路径名传递给 Python 脚本

    我在 Mac OS X 中工作 一直在用 Python 编写简单的文件 文件夹复制脚本 有没有办法将文件夹拖放到 Python 脚本图标顶部 并将文件或文件夹的路径作为脚本中的参数传递 目前 我有一个 AppleScript Droplet
  • 换行时居中 div(当它不适合在线时)

    我正在尝试仅使用 CSS 创建此布局 当标题合适时 当标题不合适时 右边的 btn 如果换行的话应该居中 我试过这个 container width 100 border 1px solid grey padding 5px block p
  • 非常规年份的 DateTime.ParseExact

    我正在尝试使用单个格式字符串读取以下格式的日期 1000 12 31 999 12 31 99 12 31 这些对应于公元 1000 年 公元 999 年和公元 99 年的日期 我尝试过以下格式字符串 yyyy M d 这对于 999 和
  • 通用的单个sql查询

    我有一个这样的表 id roll no name 1 111 Naveed 2 222 Adil 3 333 Ali 如果我有这样的数据 fields array id roll no and values array 1 111 2 22
  • WinSCP 以自动化模式向服务器进行身份验证,使用公钥身份验证

    我正在使用 WinSCP 自动复制到服务器的过程 并且仅使用用户名和密码进行身份验证 脚本是 open username password ipaddress portno hostkey
  • 如何锁定多个线程中使用的变量

    我在这里问了一个很糟糕的问题在多个线程中锁定变量 https stackoverflow com questions 4081986 lock on a variable in multiple threads因此 为了清楚起见 我将在这里
  • 如何从两个间隔中获取分割月份?

    我有两个 YYYYmm 格式的日期 start 202307 end 202612 想要根据提供的间隔按间隔分割它们 例如 split months 202307 202405 5 会给我 202307 202311 202312 2024
  • 有没有办法去掉框架装饰而不需要重新打开它? [复制]

    这个问题在这里已经有答案了 我正在制作一个简单的圣经阅读器 我想要一个全屏选项 默认情况下 框架是最大化的 但框架就在那里 我有一个方法 setFullScreen 删除装饰 不过初始化后好像没有更新 有没有解决的办法 setFullScr
  • postgresql插入多个选择

    如果这是我插入一条记录的方式 insert into fund data fund entries id fund val bbg pulls id select fe id 1 20 from fund entries fe where