Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在表中插入一个唯一的键、几个列和子查询的和。

在表中插入一个唯一的键、几个列和子查询的和。
EN

Stack Overflow用户
提问于 2017-01-30 08:43:45
回答 2查看 50关注 0票数 3

我使用postgres,在DB迁移过程中,我有一个空表tableB,我想从另一个tableA中的数据中填充它。

tableB有以下列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE contributors (
    id bigint NOT NULL,
    pps double precision NOT NULL,
    contributor_user_id bigint,
    project_id bigint
);

tableA有以下列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE tableA (
    id bigint NOT NULL,
    assigned_ppoints double precision NOT NULL,
    state integer,
    contributor_id bigint,
    project_id bigint
);

所有的*_id实际上都是外键。

我需要在tableB上为contributor_idproject_id of tableA的现有组合添加一个新行,如下所示

  • project_id中,project_id of tableA
  • contributor_user_id,我需要contributor_id of tableA
  • pps中,我需要contributor_user_idproject_idassigned_ppointstableA中的state=2之和。

我的起点(而且非常遥远)是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO tableB (id, project_id, contributor_user_id, pps) 
SELECT MAX(id) FROM tableB, project_id, contributor_id, SUM(assigned_ppoints)
FROM tableA WHERE project_id=1 AND state=2 AND contributor_id=1;

这是错误的,并且只会添加与project_idcontributor_id的一个组合对应的一行。

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 09:59:00

集料过滤器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
    max(id),
    contributor_id,
    project_id,
    sum(assigned_ppoints) filter (where state = 2)
from t
group by 2,3

9.3及以前的版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
    max(id),
    contributor_id,
    project_id,
    sum(assigned_ppoints * (state = 2)::integer)
from t
group by 2,3
票数 2
EN

Stack Overflow用户

发布于 2017-01-30 09:00:30

我建议采用这样的结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert into A (...)
select
  something_B,
  another_B,
  (select something_C from C where ...) as subselect_C
from B
where ...
;

正如您现在看到的,您将对B的每个匹配行执行子查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41941089

复制
相关文章
MySQL查询表位置和列注释等
; # 查询表在哪个数据库与注释 SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT FROM information_schema.TABLES WHERE 1=1 # AND TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名' # AND TABLE_COMMENT = '表注释' ; # 查询列在哪个表与注释 SELECT c.TABLE_SCHEMA, c.TABLE_NAME, t.TABLE_COMMENT, COL
林万程
2018/06/21
3K0
Oracle查询表位置和列注释等
-- 注释 SELECT t.TABLE_NAME, t.COMMENTS, c.COLUMN_NAME, c.COMMENTS FROM USER_COL_COMMENTS c JOIN USER_TAB_COMMENTS t ON c.TABLE_NAME = t.TABLE_NAME WHERE 1 = 1 -- AND t.TABLE_NAME = '' -- AND t.COMMENTS like '%%' -- AND c.COLUMN_NAME = '' --
林万程
2020/06/16
9860
Oracle函数学习(单表查询和子查询)
–单表查询: –当需要的数据在一张表中,考虑使用单表查询 –多表联合查询: –当需要查询的数据分布在多张表中,考虑使用多表联合 –子查询学习: –使用时机:当查询的筛选条件不明确时,考虑使用子查询。 –单行子查询 –多行子查询
葆宁
2019/04/19
9070
【DB笔试面试613】在Oracle中,和子查询相关的查询转换有哪些?
和NOT EXISTS类似,也选择了哈希连接,只不过是HASH JOIN ANTI NA。这里的NA,实际表示Null-Aware的意思,在11g及以后的版本中,Oracle增加了对空值敏感的反关联的支持。
AiDBA宝典
2019/09/29
4.6K0
对比ClickHouse中的TinyLog表引擎和LogBlock表引擎,在存储和查询效率方面的差异
从存储方式来看,TinyLog表引擎将每个数据块以不同的时间戳追加到日志文件中,而LogBlock表引擎将数据写入到稠密的块中,每个块可以包含多个数据值。
一凡sir
2023/10/19
2310
对比ClickHouse中的TinyLog表引擎和LogBlock表引擎,在存储和查询效率方面的差异
在PowerDesigner中设计物理模型1——表和主外键
物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。由于物理模型和数据库的一致性,接下来以数据库对象和物理模型对象的对应来一一介绍:
深蓝studyzy
2022/06/16
2.2K0
在PowerDesigner中设计物理模型1——表和主外键
在Word中插入一个可以勾选和取消的方框
文章背景: 在工作中,有时需要在表格内插入几个复选框,让用户去勾选,如下图所示。这种通过点击方框,自动打上对勾的效果如何实现呢?下面介绍一种方法。
Exploring
2023/08/17
3.3K0
在Word中插入一个可以勾选和取消的方框
hive中常量列的添加和查询
在正常应用场景中,常常会从HIVE中直接获取某个DATAFRAME,这个dataframe除了与数据表中某些字段的提取,还往往会涉及到一些常量列的添加,用以如区分数据等场景。
sparkexpert
2022/05/07
1.2K0
hive中常量列的添加和查询
十五、子查询EXISTS和IN的使用
如果运算符 in 后面的值来源于某个查询结果,并非是指定的几个值,这时就需要用到子查询。子查询又成为内部查询或嵌套查询,即在 SQL 查询的 WHERE 子句中嵌入查询语句。语法如下:
喵叔
2021/06/25
1.8K0
sql连接查询和嵌套查询_sql子查询和连接查询
【例二】:查询 JAVA第一学年 课程成绩排名前十的学生 并且分数要大于80 的学生信息(学号、姓名、课程名称、分数)
全栈程序员站长
2022/09/22
4.4K0
sql连接查询和嵌套查询_sql子查询和连接查询
MYSQL在众多表中查询表名和字段名
SELECT table_name, column_name from information_schema.columns WHERE column_name LIKE 'Name';
大江小浪
2018/07/24
4.1K0
mysql创建临时表,将查询结果插入已有表中
        今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取。我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些。然后还需要将查询的结果存储到临时表中。下面是创建临时表以及插入数据的例子,以供大家参考。 A、临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表: 1)定义字段   CREATE TEMPORARY TABLE tmp_table (       name VAR
苦咖啡
2018/05/07
9.9K0
MySQL(八)子查询和分组查询
例如:select user_id from usertable where mobile_no in (select mobile_no from mobile where mobile_id = '10086');
allsmallpig
2021/02/25
3.9K0
Django ORM 查询表中某列字段值
方式一获取到的是一个QuerySet,内容是键值对构成的,键为表的列名,值为对应的每个值。
BigYoung小站
2020/05/04
3.7K0
HIVE基础命令Sqoop导入导出插入表问题动态分区表创建HIVE表脚本筛选CSV中的非文件行GROUP BYSqoop导出到MySQL字段类型问题WHERE中的子查询CASE中的子查询
从一个表查数据插入到另一个表中,出现以下异常: 'STATUS' in insert schema specification is not found among regular columns of srm.invoice_lines_temp2 nor dynamic partition columns.. Error encountered near token 'material_group'
spilledyear
2018/10/09
15.4K0
HIVE基础命令Sqoop导入导出插入表问题动态分区表创建HIVE表脚本筛选CSV中的非文件行GROUP BYSqoop导出到MySQL字段类型问题WHERE中的子查询CASE中的子查询
MySQL如何将select子查询结果横向拼接后插入数据表中
除了最后一列默认是当前时间戳,每一列的结果都是一个select查询结果。如何将查询的结果合并成一条记录插入到上面的数据表中呢?网上也没有确切的答案,摸索了很久,最后,终于在百般尝试下使用join进行横向拼接完成了我想要的功能!参考sql语句如下:
恋喵大鲤鱼
2018/08/03
7.8K0
MySQL 表和列的注释深入理解
像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。
星哥玩云
2022/08/17
2K0
怎么一键取消隐藏的行和列
今天没有学员提问 只有同事点名 怎么一键取消隐藏的行和列 假设一个表是这样的 我们看到不连续的字母和数字 就知道它有隐藏行列了 如何快速取消隐藏呢 直接上GIF 第一步 点击A和1的交界处全选 第二步 点击开始->格式->隐藏和取消隐藏->取消隐藏行/列 还有一种比较高端的方法 写VBA Sub showAll() Cells.Rows.Hidden = 0 Cells.Columns.Hidden = 0 End Sub 效果看GIF
但老师
2022/03/22
3.3K0
怎么一键取消隐藏的行和列
点击加载更多

相似问题

数据表的几个列的子列和赋值

27

使用子查询和唯一值插入

10

在实例表中插入几个外键

11

唯一键,插入忽略和表分区

20

插入表中包含标识列和外键列

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文