0
MySQL表「DemoTable」(ID - >自動遞增)如何獲得重複的行數在MySQL
id subject_id subject_name question exams
1 3 sub3 ques1 e1,e4
2 3 sub3 ques2 e1
3 2 sub2 ques3 e1
4 2 sub2 ques4 e3,e5
我要的是這個下面的輸出where子句 - where exams like '%e1%'
subject_id subject_name number_of_questions
3 sub3 2
2 sub2 1
目前,我使用兩個單獨的查詢 -
爲了獲得主題名稱的名單 -
Select Distinct subject_id, subject_name from DemoTable where exams like '%e1%'
和
要獲得問題的數量每個主題都有 -
SELECT COUNT(*) as `num` FROM DemoTable where subject_id=$subject_id
但對於我的工作,我需要一個查詢做這兩項工作,正如我上面提到的。 如何做到這一點?
編輯 - 1.正如 「于爾根·d」,在他的回答中提到 -
SELECT subject_id, subject_name, COUNT(distinct question) as questions_count
FROM DemoTable
where find_in_set('e1', exams) > 0
group by subject_id, subject_name
在此查詢find_in_set('e1', exams) > 0
作品,但只是作爲exams='e1'
NOT exams like '%e1%'
這是我的情況。
任何方式使用like
在find_in_set
?
謝謝。問候,
'FIND_IN_SET( 'E1',考試)>僅在0'工程'考試=%E1% '' 我甚至嘗試'FIND_IN_SET「e1''不一樣,如果'喜歡考試工作' ('%e1%',考試)> 0',但沒有運氣。 如何獲得'like'的值? –
如果該功能對您不適用,我不確定您是否嘗試去做。請添加更多示例數據和預期輸出 –
我想說的是,只有在find_in_set(string,column_name)'中的字符串值完全相等時,您所建議的查詢才能完美工作,正如您將它放在find_in_set('e1' ,考試)'。 **但在我的情況下,列'檢查'有多個字符串**(請參閱上面的表結構,'考試'有'e1,e4')。所以我需要使用'like',以便查詢可以在'考試'列中包含具有值'e1,e4'的行。 'find_in_set('e1',考試)'包括在考試列中只有'e1'的行,並且不包括具有多個值的例如'e1,e4'希望這次我很清楚。 –