在列中显示GroupBy常用值一次

时间:2017-02-10 11:32:32

标签: mysql group-by

我正在尝试从第一个表中获得第二个表。我正在按一些数据进行分组,并且只想显示重复的值一次。

Aircode  FlightNumber Locator Title
A01      F01          A       Miss
A01      F01          A       Mr
A01      F01          B       Miss
A01      F01          B       Miss
A01      F02          A       Mr
A01      F02          A       Mr
A01      F02          C       Mr
A02      F01          A       Mr


Aircode  FlightNumber Locator Title
A01      F01          A       Miss
                              Mr
                      B       Miss
                              Miss
         F02          A       Mr
                              Mr
                      C       Mr
A02      F01          A       Mr

我无法为此搜索合适的结果。不确定MySQL中是否有任何问题。

我找到了MSSQL的链接,但我不想让查询复杂化。该问题的链接是Display the record in column for grouping only once

这是一个相关的问题。

有可能做到这一点吗?

欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

当新行具有旧值以创建第二个表时,您可以使用字段名称中的变量返回null

 SET @aircode_var = '' , @flight_var='' , @locator_var='' ;
 SELECT if(@aircode_var=Aircode, null,@aircode_var:=Aircode),
      if(@flight_var=FlightNumber , null ,@flight_var:=FlightNumber ),
      if(@locator_var=Locator , null ,@locator_var:=Locator ),
      Title
 FROM tablename
 group by Aircode , FlightNumber , Locator

结果必须如下所示:

 A01    F01     A       Miss
 null   null    null    Mr
 null   null    B       Miss
 ....

注意::=为变量分配新值,而=IF来说是合乎逻辑的。

(*)在第一行中使用新的SET命令更新了查询,因为多个正在运行的查询和错过的结果存在错误。