首页 > 解决方案 > 选择表中所有列的最简单方法,在一列上具有不同的条件

问题描述

我有一个超过 100 列的表,我想编写一个选择查询,根据一列上的不同条件从表中选择所有列。

For ex->

Col_A Col_B Col_C Col_D
  1     120  12     12
  1     12   43     23
  1      3    1      1
  2     12    1     132
  2     13    3     333

在上面的示例中,我想选择 Col_A 唯一的所有列(在源表中存在多个值的情况下首次出现)

Output

Col_A Col_B Col_C Col_D
  1     120  12     12
  2     12    1     132

标签: sqldistinct

解决方案


如果distinct on支持语法,您可以这样做:

SELECT DISTINCT ON (Col_A) * FROM table_name

或者,如果支持窗口功能,则类似下面的内容将实现这一点。tmp 子查询通过 Col_A 值分别分配增量编号,而主查询仅选择第一条记录。

with tmp as (
  SELECT *, row_number() OVER (PARTITION BY Col_A) AS num
  FROM table_name
)
SELECT * FROM tmp WHERE num=1

如果您指定您正在使用的 sql 方言,可以找到更多想法。


推荐阅读