字段中的SQL DISTINCT值

时间:2015-11-30 10:47:39

标签: sql

我知道如何选择不同的行,但我找不到如何从字段中提取不同的“字/字符串/数据”以更新另一列。 例如,如果我有像这样的表中的数据..

表1

  String[] complexCommand = {"ffmpeg", "-y", "-i", input_video1,
                            "-i", input_video2, "-strict", "experimental",
                            "-filter_complex",
                            "[0:v]scale=hd720,setsar=1:1[v0];[1:v]scale=hd720,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1",
                            "-ab", "48000", "-ac", "2", "-ar", "22050", "-s", "hd720", "-vcodec", "mpeg4", "-b:v", get_br + "k", merged_video_op_path};

我想在TEXTDATA字段中使用'distinct'数据更新另一个表中的另一个字段,所以它看起来像这样

表2

    ID    TEXTDATA
    123   ROCK DANCE ROCK INDIE ROCK POP DISCO EURO POP
    456   POP DANCE DISCO POP

我研究了如何用另一个表中的数据更新一个表...

    ID    NEWTEXTDATA
    123   ROCK DANCE INDIE POP DISCO EURO
    456   POP DANCE DISCO

但我希望它在TEXTDATA记录中具有不同的值。希望这有点道理。在更新查询中可以做到这一点吗? 非常感谢提前

1 个答案:

答案 0 :(得分:1)

对于Sql Server 2008:

您可以使用带有不同值的xml查询来执行此操作。下面的代码将为您提供给定行的不同记录。

cast(cast('<d>'+replace(TEXTDATA, ' ','</d><d>')+'</d>'  as xml).query('distinct-values(/d)') as varchar(max))

因此,在上述函数的帮助下,您的最终查询将如下所示。

UPDATE
    table2
SET
    NEWTEXTDATA = cast(cast('<d>'+replace(TEXTDATA, ' ','</d><d>')+'</d>'  as xml).query('distinct-values(/d)') as varchar(max))
FROM
    table2 t2
JOIN
    table1 t1
ON 
    t2.ID = t1.ID; 

以下是工作SQLFiddle

对于MySql: MySql无法实现此目的。

规范化您的数据库。

从表中获取值并使用php explode(),并使用array_unique删除重复值。