sql—如何提取特定字段中具有相同值的记录之间字段值的差异

yr9zkbsy  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(322)

我有一个如下示例所示的表(只有200多列):

+-------+-----------+-------+------+
| id    | field1    | field2| ...  |
+-------+-----------+-------+------+
| 1984  | test      | 55    | ...  | 
| 1984  | test      | 56    | ...  |
| 2006  | sky       | 13    | ...  |
| 2006  | sky       | 13    | ...  |
| 2006  | dog       | 13    | ...  |
| 1364  | house     | 77    | ...  |
| 1364  | garden    | 33    | ...  |
| ...   | ...       | ...   | ...  |
+-------+-----------+-------+------|

我正在寻找一种创建查询/报告的方法,该方法将显示:
具有不同值但
仅在具有相同“id”的“记录组”中。
比如:

+-------+-----------+
| id    | diff      |
+-------+-----------+
| 1984  | field2    |
| 2006  | field1    |
| 1364  | field1    |
| 1364  | field2    |
| ...   | ...       |
+-------+-----------+

如果我能做到这一点,那将非常有帮助。获得不同字段的值将是一个额外的好处。
我想问,这是否可以通过sql实现?我应该研究哪些方法/函数来构建这样的查询?
谢谢你的指导!

cmssoen2

cmssoen21#

我想 union all 似乎是最简单的方法:

select id, 'field1' as col
from t
group by id
having min(field1) <> max(field1)
union all
select id, 'field2' as col
from t
group by id
having min(field2) <> max(field2)
union all
. . .

您可以使用电子表格或通过对数据库中的元数据表编写查询来构造查询。

相关问题