2011-02-25 82 views
1

我有一個表,如:需要MySQL特定語句獲取主字和一個所有單詞選擇

ID word masterWord 
1 test 1 
1 test1 0 
1 test2 0 
2 look 0 
2 kiss 1 
2 eye 0 

現在我想從SELECT語句得到2個記錄:

test  test1, test2 
kiss  look, eye 

第一列是主詞,第二列是group_concat所有其他詞。

表格中的主詞用真(1)標記,並且ID是聲明哪些詞持有一組(同義詞)。好吧,我知道我已經做出了愚蠢的單詞,但是我爲非英語單詞做了這個,根據它的數量,性別等,一個單詞有不同的結局......

每個ID必須有一個單詞被選爲主單詞......如果這能幫助查詢或不是我不知道;-)

回答

2

我認爲像

SELECT MAX(CASE WHEN masterWord = 1 THEN word END) AS masterWord , 
     GROUP_CONCAT(CASE WHEN masterWord = 0 THEN word END) AS OtherWords 
FROM YourTable  
GROUP BY ID 

應該這樣做。也許您可能還需要將CAST添加到GROUP_CONCAT輸入中。

+0

你做到了,它真的有效,只解釋不使用我的索引,我不知道必須索引什麼。 – Jerry2 2011-02-25 13:14:25

+0

+1單通解決方案 – RichardTheKiwi 2011-02-25 13:15:05

+1

@ Jerry2沒有可用的索引,這是一個全表掃描(1遍),因爲它會涉及您的所有記錄 – RichardTheKiwi 2011-02-25 13:15:38

2
select m.word, group_concat(w.word) wordlist 
from words m 
left join words w on w.masterword=0 and w.id=m.id 
where m.masterword=1 
group by m.id 
+0

這也很好。我不知道現在是誰選擇的答案,你們都很棒:-( – Jerry2 2011-02-25 13:21:11

+0

Martin's最有可能更快,實際上,大約99.9%肯定 – RichardTheKiwi 2011-02-25 13:21:45

+0

Thanx的誠實,我會接受他的回答,但你的是有用的另外,它讓我學到了一些東西 – Jerry2 2011-02-25 13:23:16

相關問題