仅从 Sql 数据库中获取唯一结果

Fetching Only Unique Results From Sql Database

数据库Table

    ID      Post                Tags
    1       Range rover         range-rover,cars
    2       Lamborghini         lamborghini,cars
    3       Kawasaki            kawasaki,bikes
    4       Yamaha R1           yamaha,r1,bikes

我想从结果中删除重复值 sql

当我从数据库中获取标签(标签在 , 中)时我得到了什么

SELECT Tags from posts; 

结果:

range-rover,cars lamborghini,cars kawasaki,bikes yamaha,r1,bikes

我需要的是不再显示相同的结果。

range-rover,cars lamborghini kawasaki,bikes yamaha,r1

您可以使用计数 table 和 SUBSTRING_INDEX:

拆分文本
SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(t.tags, ',', n.n), ',', -1) AS val
FROM posts t 
CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
) n
 WHERE n.n <= 1 + (LENGTH(t.tags) - LENGTH(REPLACE(t.tags, ',', '')))

SqlFiddleDemo

如果需要一行,请添加 GROUP_CONCAT:

SELECT GROUP_CONCAT(DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(t.tags, ',', n.n), ',', -1)) AS val
...

SqlFiddleDemo2