sql - Postgresql 在多个连接上返回重复数据

标签 sql postgresql

我无法弄清楚为什么我的输出重复,但我确定这是不正确的连接。一般来说,我是 SQL 的新手,所以这可能是一个低效的查询。

SELECT a.id, a.number, a.number2, b.id, b.number3, b.number4, c.id, c.score, (a.number - b.number3) as a_b_difference, (a.number2 - b.number4) as a_b_difference3 FROM file a
INNER JOIN file b on a.id = b.id
INNER JOIN file c on a.id = c.id

我想减去两个字段并将所有三个文件合并到 id 上。但是,我的结果填充了重复数据。

这是我得到的样本:

enter image description here

最佳答案

c.ida.id,所以不需要join:

SELECT a.id, a.number, a.number2, b.id, b.number3, b.number4, a.id, c.score,
       (a.number - b.number3) as a_b_difference,
       (a.number2 - b.number4) as a_b_difference3
FROM file a INNER JOIN
     file b 
     ON a.id = b.id;

至于你的问题的其余部分,我没有看到重复。如果生成的行过多,您可能需要修复 JOIN 条件。如果整行被复制,您可以使用 SELECT DISTINCT()。如果您想要一组中的一行,您可以使用 GROUP BYDISTINcT ON

关于sql - Postgresql 在多个连接上返回重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863419/

相关文章:

hibernate - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 名为 «name» 的列不存在于此 «ResultSet» Hibernate with PostgreSQL JDBC

sql - 使用一个 "primary"值实现多对多

sql - PostgreSQL:从时间戳截断小时/分钟/秒

php - 循环检查表中是否存在并生成随机字符串

sql - 如何将多个 SQL 查询合并为一个?

postgresql - postgres 文本搜索

基于给定值优先级的sql更新

sql - 什么是 DDL 和 DML?

sql - 如何透视下一个 ROW_NUMBER()

postgresql - 按模式分隔 Postgres WAL?