SELECT id, country FROM my_records
删除重复的逗号分隔值在一个专栏中,我已经得到了从MySQL查询上述结果,我想从结果中删除重复的ID。 不是借助PHP代码,而是使用MySQL查询。有没有任何功能或查询来做同样的事情?
感谢
SELECT id, country FROM my_records
删除重复的逗号分隔值在一个专栏中,我已经得到了从MySQL查询上述结果,我想从结果中删除重复的ID。 不是借助PHP代码,而是使用MySQL查询。有没有任何功能或查询来做同样的事情?
感谢
我坚持到了类似的情况,发现MySQL不提供任何预定义的功能来克服这个问题。
为了克服我创建了一个UDF,请看看下面的定义和用法。
CREATE FUNCTION `get_unique_items`(str varchar(1000)) RETURNS varchar(1000) CHARSET utf8
BEGIN
SET @String = str;
SET @Occurrences = LENGTH(@String) - LENGTH(REPLACE(@String, ',', ''));
SET @ret='';
myloop: WHILE (@Occurrences > 0)
DO
SET @myValue = SUBSTRING_INDEX(@String, ',', 1);
IF (TRIM(@myValue) != '') THEN
IF((LENGTH(@ret) - LENGTH(REPLACE(@ret, @myValue, '')))=0) THEN
SELECT CONCAT(@ret,@myValue,',') INTO @ret;
END if;
END IF;
SET @Occurrences = LENGTH(@String) - LENGTH(REPLACE(@String, ',', ''));
IF (@occurrences = 0) THEN
LEAVE myloop;
END IF;
SET @String = SUBSTRING(@String,LENGTH(SUBSTRING_INDEX(@String, ',', 1))+2);
END WHILE;
SET @ret=concat(substring(@ret,1,length(@ret)-1), '');
return @ret;
END
使用范例:
SELECT get_unique_items('2,2,2,22,2,3,3,3,34,34,,54,5,45,,65,6,5,,67,6,,34,34,2,3,23,2,32,,3,2,,323') AS 'Items';
结果:
2,22,3,34,54,45,65,67,23,32,323
希望这有助于!
如果只有一个值没有任何逗号,它就不起作用 – pee2pee
@ pee2pee我解决了这个问题。 –
国家是一个专栏吗?而不是GROUP_CONCAT的结果? – AgRizzo
是国家是专栏也不是来自GROUP_CONCAT –
你能提供查询吗?也许它可以帮助我们理解。 –