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

用户表user
idname
1张三
2李四
3王五
标签表tags
iduidtitle
11聪明
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,'聪明');
当年话下
浏览 403回答 2
2回答

一只甜甜圈

你那个查询的条件明显就不对//tags表`tags`.`title`='聪明'AND`tags`.`title`='勤奋'这种数据根本就不存在SELECT*FROMuserWHEREidIN(SELECTuidFROMtagsWHEREtitleIN('聪明','勤奋')GROUPBYuidHAVINGcount(uid)=2);

慕桂英4014372

SELECTu.*FROMuseruWHERE(SELECTcount(id)FROMtagsWHEREuid=u.idAND(title='聪明'ORtitle='勤奋'))>1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript