Mysql表" DemoTable" (id - >自动增量)
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 exams like '%e1%'
subject_id subject_name number_of_questions
3 sub3 2
2 sub2 1
在Stackoverflow用户juergen 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
但是,此查询的问题是输出为 -
subject_id subject_name questions_count
3 sub3 1
2 sub2 1
这意味着,它只计算行where exams = 'e1'
,因此它不包含第一行where exams = 'e1,e4'
[通过where exams like '%e1%'
包含在正常情况下]
应该使用什么查询来获得所需的输出?
感谢。的问候,
答案 0 :(得分:2)
Juergen的回答应该是正确的。事实上,它应该比这个版本更好:
SELECT subject_id, subject_name, COUNT(distinct question) as questions_count
FROM DemoTable
where exams like '%e1%'
group by subject_id, subject_name;
优点是,在搜索e10
时,他的版本不会混淆e1
和e1
。我怀疑您的问题和您网站上的数据是不同的。你应该尝试设置一个SQL小提琴。