【问题标题】:php mysqli select unique rows from duplicate and partially duplicate rowsphp mysqli 从重复和部分重复的行中选择唯一的行
【发布时间】: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。如果这不起作用,请尝试仅按一列分组。

标签: mysql group-by unique


【解决方案1】:

看着你的样品似乎你在寻找

SELECT DISTINCT lvl0,lvl1,lvl2,lvl3 
FROM table; 
where lvl2 is not null

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多