有没有办法获得这样的值:“300、400、500、300”检查用逗号分隔的每个数字,如果加倍删除它。所以值将如下所示:“300, 400, 500”。
我可以在 PHP 脚本中做到这一点,但我只是想知道是否可以使用 MySQL。
有没有办法获得这样的值:“300、400、500、300”检查用逗号分隔的每个数字,如果加倍删除它。所以值将如下所示:“300, 400, 500”。
我可以在 PHP 脚本中做到这一点,但我只是想知道是否可以使用 MySQL。
创建具有唯一索引的临时表,插入忽略重复错误的值,从临时表中选择所有记录,删除该表。
快速播放,但要获得每一行的唯一值,你可以使用这样的东西
SELECT Id, GROUP_CONCAT(DISTINCT aWord ORDER BY aWord ASC)
FROM (SomeTable.Id, SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(SomeColumn, ','), ' ', aCnt), ',', -1) AS aWord
FROM SomeTable
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt
FROM integers a, integers b, integers c) Sub1
WHERE (LENGTH(SomeColumn) + 1 - LENGTH(REPLACE(SomeColumn, ',', ''))) >= aCnt) Sub2
GROUP BY ID
这依赖于有一个名为 integers 的表,其中包含一个名为 i 的单列,有 10 行,值为 0 到 9。它最多可以处理约 1000 个单词,但可以轻松更改以应对更多
可能最容易使用 INSERT / ON DUPLICATE KEY UPDATE 来使用它来使值唯一。