在选择表时,我需要在列名称 (TGroup_Name) 下将重复的值设置为空或 null
例如:
在下表中,列名称 (TGroup_Name) 在两行中具有重复值 (ED_1)。所以我想使第二行值为空或为空(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
最佳答案
大多数开发人员认为最好使用应用程序端过程代码(如 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
而不是我所显示的内容,结果就会出错。它也完全不可移植到其他品牌和型号的表服务器。
关于php - 如何编写查询以抑制结果集列中的连续重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354754/