我知道如何选择不同的行,但我找不到如何从字段中提取不同的“字/字符串/数据”以更新另一列。 例如,如果我有像这样的表中的数据..
表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记录中具有不同的值。希望这有点道理。在更新查询中可以做到这一点吗? 非常感谢提前
答案 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删除重复值。