2012-12-16 43 views
0

我有一個問題,我不知道如何解決。Mysql - 從多行替換爲一行

爲了簡化我的問題有一個帶有鏈接的表:

 

    fk linkid link 
    1 1  www.stackoverflow.com 
    1 2  www.google.com 
    1 3  www.cnn.com 
    2 4  www.other.com 

然後我還有一個表的字符串列,其中用戶可以插入這些鍵,然後就應該更換。你輸入一個像L {一個數字}的密鑰,如L1。 「L1」 然後應該用的linkID 1更換..

 

    id string_column 
    1 "Hi my first link is {L1]. More text {L1} {L1} {L3} {L2}" 
    2 "Go here: {L4}" 

所以,當我加入他們的ID 1我得到這個:

 

    id linkid link     string_column 
    1 1  www.stackoverflow.com "Hi my first link is {L1]. More text {L1} {L1} {L3} {L2}" 
    1 2  www.google.com   "Hi my first link is {L1]. More text {L1} {L1} {L3} {L2}" 
    1 3  www.cnn.com   "Hi my first link is {L1]. More text {L1} {L1} {L3} {L2}" 

什麼,我想獲得的是:

 

    id string_column 
    1 "Hi my first link is www.stackoverflow.com. More text www.stackoverflow.com www.stackoverflow.com www.cnn.com www.google.com" 

是否有可能在mysql中編寫這樣的sql? 正如你在上面看到的,我需要在1列上進行替換,但是從多行獲取值,然後僅爲每個ID返回1。

由於系統已經是它的方式,我不能改變設置,但只需要找到一個方法來得到這個權利。

回答

0

我看到要做到這一點的唯一方法就是做一個工作的腳本,在其中取出所有句子,從L中剪下數字,搜索相應的鏈接並用該鏈接替換所有的{L1}。然後你用新的字符串更新數據庫。

+0

好的,我很害怕那個。 – Daniel