如何编写查询以抑制结果集列中的连续重复值?

时间:2014-03-12 14:33:11

标签: php mysql

我需要在列名称(TGroup_Name)下将重复值设为空或null,选择表

例如:

在下表中,列名称(TGroup_Name)具有两行中的重复值(ED_1)。所以我想使null或空第二行值(ED_1)。但不应该影响整行。


TGID    TParent_Group_ID    TGroup_Name TGroup_Type TEID    TEmp_Group_ID   TEmp_Name   TEmp_Type
1              0                MD            G      10           1           Mallik        GH
10             1                ED_1          G       5          10           Thevan        GH
10             1                ED_1          G       7          10           Gupta          U
11             1                ED_2          G      11          11           Dinesh        GH

1 个答案:

答案 0 :(得分:1)

大多数开发人员认为最好使用应用程序端过程代码(如Java或PHP)在结果集中抑制此类连续重复值。

但你可以在SQL的MySQL变体中这样做(http://sqlfiddle.com/#!2/691f5/4/0)。

SELECT TGID,
       TParent,
       IF(Group_ID=@PREV,'',@PREV:=Group_ID) AS Group_ID,
       TGroup_Name
  FROM TABLE1,
       (SELECT @PREV:='xxxx') AS i
 ORDER BY TABLE1.TGID 

IF结合@prev的运行值会抑制连续重复。额外的(SELECT...)子查询用于初始化@prev

要做到这一点,这是一项棘手的事情。例如,如果你只是说ORDER BY TGID而不是我所展示的那样,那就错了。它对表服务器的其他品牌和型号也完全不可移植。