我需要在列名称(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
答案 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
而不是我所展示的那样,那就错了。它对表服务器的其他品牌和型号也完全不可移植。