求MySQL一个SQL语句 不包含某个标签的用户列表
- 7276
- MySQL
- 27
- super_dodo
- 2016/11/18
现在的需求和情况是有两张表(用户表和用户标签表),单个用户可以有多个标签,也可以没有任何标签。现在需要查询出不包含某个标签的用户的列表。
用户表 user_list ---ul user_id name 1 qq 2 weibo 3 weixin 4 facebook 5 twitter 用户标签标签表 user_tag ---ut user_id tag_id 1 100 1 101 1 102 3 101 5 102 求sql语句 查询出不包含标签ID为101的用户列表 说明:一个用户可以没有标签也可以有多个标签 #方法1--子查询 SELECT * FROM user_list as ul WHERE NOT EXISTS(SELECT 1 FROM user_tag as ut WHERE ul.user_id=ut.user_id AND ut.tag_id='101'); #方法2--线拼接标签集合--查找字符串 SELECT ul.user_id, ul.name, GROUP_CONCAT(ut.tag_id) FROM user_list as ul LEFT JOIN user_tag as ut ON ul.user_id = ut.user_id GROUP BY ul.user_id, ul.name HAVING instr(GROUP_CONCAT(ut.tag_id), '101') = 0 OR GROUP_CONCAT(ut.tag_id) IS NULL //得到的结果为 2 4 5
那么问题来了。要查找包含101,103的标签的语句怎么写呢。可能你会说LEFT JOIN 之后WHERE就可以了,其实不然。且听下回分解。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例