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


how to write a query to suppress consecutive repeating values in resultset columns?

当选择表

时,我需要在Column Name (TGroup_Name)下使重复值为空或null

例如:

在下面的表中,列名(TGroup_Name)在两行中有重复的值(ED_1)。所以我想让第二行值(ED_1)为空。但不应影响整个行。

<>之前TGID TParent_Group_ID TGroup_Name TGroup_Type TEID TEmp_Group_ID TEmp_Name TEmp_Type10 MD G 10马利克GH10 1 ED_1 G 5 10 Thevan GH10 1 ED_1 G 7 10 Gupta U11 1 ED_2 G 11 11 Dinesh GH

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

但是你可以在MySQL的SQL变体中这样做(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,而不是我所展示的,它会出错。它也完全不能移植到其他品牌和型号的表服务器。