Mysql 区分和分组之间的混淆

Mysql 区分和分组之间的混淆,mysql,sql,Mysql,Sql,在下面的场景中,我对DISTINCT和GROUP BY感到困惑 我有一个a-z列的表。我需要使用以下条件进行查询 select DISTINCT a, b, c, d from table_name 但我需要上面查询中的所有a-z列,在这里我可以区分a、b、c、d 那么我应该执行以下查询吗 select * from table_name GROUP BY a, b, c, d 在这种情况下,我混淆了DISTINCT和GROUP BY 谁能帮我澄清一下吗 谢谢。使用窗口功能: select

在下面的场景中,我对DISTINCT和GROUP BY感到困惑

我有一个a-z列的表。我需要使用以下条件进行查询

select DISTINCT a, b, c, d from table_name
但我需要上面查询中的所有a-z列,在这里我可以区分a、b、c、d

那么我应该执行以下查询吗

select * from table_name GROUP BY a, b, c, d
在这种情况下,我混淆了DISTINCT和GROUP BY

谁能帮我澄清一下吗

谢谢。

使用窗口功能:

select t.*
from (select t.*,
             row_number() over (partition by a, b, c, d order by a) as seqnum
      from t
     ) t
where seqnum = 1;
聚合不适用于此问题。此查询:

select *
from table_name 
group by a, b, c, d;

语法上是不正确的——令人高兴的是,MySQL默认设置不再允许这种语法。问题是,最终在select中会出现未聚合的列,如e、f等。这在SQL中是不允许的。您需要明确地进行聚合查询。

您应该在此处添加示例数据。您是否试图从e-z列中为每个唯一的a-d实例获取所有不同的值?我需要获取所有具有不同a-d的列。我无法提供此问题的数据。这种问题高度表明架构设计不佳。