sql - 如何选择多列,但只显示唯一/非重复的结果(基于一个特定列)?

标签 sql postgresql

我有一个有趣的表,其中两个键组合在一起构成每一行的主键。但在一种极端情况下,我想选择所有行(但只有大约 4 列),但结果中没有特定列的任何重复项。

例如,如果我有一个包含“account_id、company_id、key、is_customer、favorite_veg”列的表,将会有很多重复的“account_id”,因为它们与“company_id”一起构成主键。

但是如果我只想要一个包含所有 account_id 的列表,同时保留其他行呢?令人困惑的是,在此示例中,不同公司 ID 之间的其他行将是静态的,因此不存在未包含信息的潜在风险。

在我看来,它类似于“SELECT DISTINCT(account_id) COLUMNS (account_id, key, is_customer, favorite_veg) FROM customers”,但这显然行不通。

最佳答案

也许 DISTINCT ON 有帮助?这给出了第一次出现不同 account_id

的所有行

demo: db<>fiddle

SELECT DISTINCT ON (account_id) 
    account_id, 
    key, 
    is_customer, 
    favorite_veg
FROM customers

关于sql - 如何选择多列,但只显示唯一/非重复的结果(基于一个特定列)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53119511/

相关文章:

sql - 遍历 SQL 数据库中的社交图

ruby-on-rails - 多态关联的多重内部连接

javascript - 在应用层(使用 sequelize 或其他)如果已读取的数据(SELECT)已更改(UPDATE)则中止 SQL 事务

sql - Postgres 和 Ruby 的续集 : Empty array in where-clause getting converted to slow query

mysql - 光标查找字数

sql - 如何使用 regexp_substr 修剪和忽略破折号

命令行客户端中的 MySQL 命令输出太宽

MYSQL减去日和秒

PostgreSQL 内联函数行为

sql - 涉及三个不同表的 SELECT 语句