【发布时间】:2019-11-28 14:26:56
【问题描述】:
我有一个类似的数据集
lvl0 lvl1 lvl2 lvl3
jfierf4jfi personifi6916 dentari54 knead314
jfierf4jfi personifi6916 dentari54 traf8
jfierf4jfi personifi6916 herculeses4
jfierf4jfi personifi6916 dentari54
jfierf4jfi personifi6916
其中lvl0 到lvl3 是列。像这样有 14 列,其中未填充的列值为NULL。我只想选择最长的唯一行,消除所有部分重复的行。
我想从给定的数据中提取这个
lvl0 lvl1 lvl2 lvl3
jfierf4jfi personifi6916 dentari54 knead314
jfierf4jfi personifi6916 dentari54 traf8
jfierf4jfi personifi6916 herculeses4
具有部分重复值的行将被删除。
我尝试过使用DISTINCT 和GROUP BY,但它们会生成所有行,而不会消除部分重复的行。
这些我都试过了
SELECT DISTINCT lvl3,lvl2,lvl1,lvl0 FROM table;
and
SELECT * FROM table GROUP BY lvl3,lvl2,lvl1,lvl0;
【问题讨论】:
-
这几乎是不可能回答的。请编辑您的问题以包含您尝试过的代码并发布数据库架构。
-
DISTINCT只会删除您选择的所有列相同的行。因此,如果您有 100 行,其中 10 个相同的列和一个唯一的列,它仍然会返回所有行。 -
这个没有办法解决吗?
-
你说你两个都用过;但不在一起对吧? “一起”尝试它们,而不是两种不同的方式。这很可能会解决这个问题。
-
SELECT DISTINCT lvl3,lvl2,lvl1,lvl0 FROM table GROUP BY lvl3,lvl2,lvl1,lvl0。如果这不起作用,请尝试仅按一列分组。