为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql 有用户表、标签表,如何查询同时拥有某几个标签的用户。

Mysql 有用户表、标签表,如何查询同时拥有某几个标签的用户。

人到中年有点甜 2019-05-08 17:36:15
用户表useridname1张三2李四3王五标签表tagsiduidtitle11聪明21勤奋32聪明42勤奋53聪明问题是如何查询同时包含某几个标签的人比如同时包含聪明,勤奋的人SELECT`user`.*FROM`user`JOIN`tags`ON`user`.`id`=`tags`.`uid`WHERE`tags`.`title`='聪明'AND`tags`.`title`='勤奋'这个语句查不出来结果,应该怎么写?--表的结构CREATETABLE`user`(`id`int(11)NOTNULL,`name`varchar(10)NOTNULL)ENGINE=MyISAMDEFAULTCHARSET=utf8mb4;INSERTINTO`user`(`id`,`name`)VALUES(1,'张三'),(2,'李四'),(3,'王五');CREATETABLE`tags`(`id`int(9)NOTNULL,`uid`int(9)NOTNULL,`title`varchar(20)NOTNULL)ENGINE=MyISAMDEFAULTCHARSET=utf8mb4;INSERTINTO`tags`(`id`,`uid`,`title`)VALUES(1,1,'勤奋'),(2,1,'聪明'),(3,2,'肥宅'),(4,2,'勤奋'),(5,2,'聪明'),(6,3,'聪明');
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

你那个查询的条件明显就不对
//tags表`tags`.`title`='聪明'AND`tags`.`title`='勤奋'这种数据根本就不存在
SELECT*FROMuser
WHEREidIN(
SELECTuidFROMtagsWHEREtitleIN('聪明','勤奋')GROUPBYuidHAVINGcount(uid)=2
);
                            
查看完整回答
反对 回复 2019-05-08
?
偶然的你

TA贡献1841条经验 获得超3个赞

SELECTu.*FROMuseruWHERE(SELECTcount(id)FROMtagsWHEREuid=u.idAND(title='聪明'ORtitle='勤奋'))>1
                            
查看完整回答
反对 回复 2019-05-08
  • 2 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号