小编CCM*_*CCM的帖子

优化每个 ID 具有不同值的列的查询

这个问题有一段时间了,想知道是否有更快的查询。

我有一个表,每个 ID 包含多个条目,并且想要列出同一 ID 具有不同值的所有列。

ID 品牌 类型
1 本田 轿跑车
1 吉普车 SUV
2 福特 轿车
2 福特 交叉

上表示例:
行ID = 1具有不同的Brand和Type值,因此我希望每一列有一个结果行。
由于ID = 2只有一个品牌,但有多种类型,所以类型只有一个结果行。

想要的结果会是这样的。

ID 不同之处
1 品牌
1 类型
2 类型

我通过下面的查询解决了这个问题,用一个SELECT语句检查每一列,然后UNION全部完成:

SELECT ID, 'Brand' AS Discrepancy
FROM table
GROUP BY ID
HAVING COUNT(DISTINCT Brand) > 1

UNION 

SELECT ID,'Type' AS Discrepancy
FROM table
GROUP BY ID
HAVING COUNT(DISTINCT Type) > 1; …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-performance

2
推荐指数
1
解决办法
93
查看次数

标签 统计

postgresql ×1

postgresql-performance ×1

sql ×1