2012-10-28 86 views
1

我在我的數據庫中有一個表格和歌名。有幾個重複,但略有偏離。例如,我的表可能是這樣的:在mysql中查找類似的行

id title 
1 Photobooth 
2 Photobooth [*] 
3 Photobooth [dvd] 
4 Photobooth [acoustic] 
5 Song for Kelly Huckaby 
6 Song for Kelly Huckaby [*] 

我試圖打破這種下來,我的結果會是什麼樣子:

1 Photobooth 
5 Song for Kelly Huckaby 

我應該如何處理被此查詢?去掉[]中的所有內容然後找到dups?

+0

做了 「略過」 的條目總是以'[...]'結束?你可以使用一些正則表達式來消除以'\ [。* \] $'結尾的所有內容,並在結果集上執行一個「GROUP BY」。只是我的2美分... –

+0

Yessir,大多數不同的曲目版本都是格式。有一些不遵循這種格式,但我很樂意手動處理這些一次性。 – Mike

回答

3
SELECT DISTINCT CASE WHEN LOCATE('[', title)-1 = -1 
         THEN TRIM(title) 
         ELSE TRIM(LEFT(title, LOCATE('[', title)-1)) 
       END title 
FROM table1 

SQLFiddle Demo

+0

太好了!謝謝! – Mike

+0

讓我們說我們有另一行,ID 7標題這愛。該行沒有任何其他版本。有沒有辦法從結果中排除這一行? – Mike

+0

是的,你的意思是你只想返回有多個版本的記錄?請稍候,我會更新答案。 –