这个问题有一段时间了,想知道是否有更快的查询。
我有一个表,每个 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)