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

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

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

当年话下 2019-04-27 22:20:06
用户表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贡献1836条经验 获得超5个赞

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

TA贡献1871条经验 获得超13个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信