sql >> Databasteknik >  >> RDS >> Mysql

mysql välj distinkta kommaavgränsade värden

Dela upp det innan du lägger ihop allt med DISTINCT. Det är naturligtvis bättre att normalisera dina data (högst 1 värde i en kolumn)

SELECT
  GROUP_CONCAT( DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(keywords, ',', n.digit+1), ',', -1)) keyword
FROM
  t
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) n
  ON LENGTH(REPLACE(keywords, ',' , '')) <= LENGTH(keywords)-n.digit
WHERE cid=28

Se hur det fungerar



  1. Tabell anges två gånger, både som mål för 'UPPDATERING' och som en separat källa för data i mysql

  2. Hur man får IP-adressen [MYSQL]

  3. postgresql unik begränsning för vilket heltal som helst från två kolumner (eller från array)

  4. PostgreSQL-begränsning - endast en rad kan ha flaggan