用户表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*FROMuserWHEREidIN(SELECTuidFROMtagsWHEREtitleIN('聪明','勤奋')GROUPBYuidHAVINGcount(uid)=2);
慕桂英4014372
TA贡献1871条经验 获得超13个赞
SELECTu.*FROMuseruWHERE(SELECTcount(id)FROMtagsWHEREuid=u.idAND(title='聪明'ORtitle='勤奋'))>1
添加回答
举报
0/150
提交
取消