mysql数据库查询同时拥有2个字段值的某字段值

小明 三好学生

小明 进步学生
小红 三好学生
小红 学生会
小刚 进步学生

这样一个表 查询 同时拥有 三好学生、进步学生的同学

select å§“名 from è¡¨å where å­—段2 in ('三好学生','进步学生') group by å§“名 having count(distinct å­—段2)=2

字段2就是三好学生什么的那个字段,名称自己换一下

追问

有问题 只要有5或者6的都查出来了

追答

5,6是什么?

追问

额。。测试时候用的5、6 代表那个 三好 和 进步

追答

你把错误和语句一起截图,我看下,如果不方便截图,看私信,我联系你,浏览器右上角

追问

追答

你一个用的tagid,一个用的id
到底以哪个分组?

追问

select 姓名 from 表名 where 字段2 in ('三好学生','进步学生') group by
姓名 having count(distinct 字段2)=2

SELECT id FROM `tag` where tagid in (5,6) group by
id having count(distinct tagid)=2

这不你写的么

追答select * from `tag` where id 
in
(SELECT id --这个地方先用ID,别用*
FROM `tag` where tagid in (5,6) group by 
id having count(distinct tagid)=2 order by id --先不要限制显示的行数,把limit去掉)
and  tagid in (5,6)追问

斗胆问一句 如果是这样情况呢 我要他有5 6 但没2 该怎么做? 如果复杂的话 我另开一贴

追答

先不用,你看下私信吧,我给你留言了,这么问太慢

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-21

写法1:

SELECT id FROM tags WHERE content in ('三好学生','进步学生') GROUP BY id HAVING count(id) > 1

写法2:

SELECT id FROM tags AS t1 inner JOIN tags AS t2 ON t1.id = t2.id WHERE t1.content = '三好学生' AND t2.content = '进步学生'

相似回答