mysql多对多查询 原生写法
准备工作,1.创建表
CREATE TABLE IF NOT EXISTS `users` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR() NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET = utf8mb4; CREATE TABLE IF NOT EXISTS `applications` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`systemName` VARCHAR() NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET = utf8mb4; CREATE TABLE IF NOT EXISTS `user_application` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`applicationId` INTEGER NOT NULL,
`userId` INTEGER NOT NULL,
`type` TINYINT,
UNIQUE `user_application_applicationId_userId_unique` (`applicationId`, `userId`),
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET = utf8mb4;
2.创建数据
INSERT INTO `users` (`name`) VALUES ('张三'),('李四'),('老王'),('小明'),('涛哥');
INSERT INTO `applications` (`systemName`) VALUES ('mac'),('windows'),('linux'),('android'),('qilin');
INSERT INTO `user_application` (`applicationId`,`userId`,`type`) VALUES (,,),(,,),(,,),(,,),(,,);
3.使用多对多 关联查询... 一个用户可以有多个应用,一个应用对应多个用户
查询“张三”下应用:
SELECT users.id, users.name, user_application.type, applications.systemName
FROM users
LEFT JOIN (user_application `user_application`
INNER JOIN applications `applications` ON user_application.applicationId = applications.id) ON users.id = user_application.userId
WHERE users.name = '张三'
查询“windows”下用户:
SELECT applications.systemName, users.name, user_application.type
FROM applications
LEFT JOIN (user_application `user_application`
INNER JOIN users `users` ON user_application.userId = users.id) ON applications.id = user_application.applicationId
WHERE applications.systemName = 'windows'
mysql多对多查询 原生写法的更多相关文章
- Entity Framework 多对多查询的写法
同学们,看下面的代码段就明白了: 一对多: public ICollection<ReportLookup> GetReportLookup(IEnumerable<Guid> ...
- MYSQL随机抽取查询 MySQL Order By Rand()效率问题
MYSQL随机抽取查询:MySQL Order By Rand()效率问题一直是开发人员的常见问题,俺们不是DBA,没有那么牛B,所只能慢慢研究咯,最近由于项目问题,需要大概研究了一下MYSQL的随机 ...
- mysql笔记03 查询性能优化
查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- mybatis(一、原理,一对多,多对一查询)
MyBatis框架及原理分析 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 ...
- mybatis结合mysql批量操作及查询sql
MySQL数据库 批量操作主要使用的是Mybatis的foreach,遍历参数列表执行相应的操作,所以批量插入/更新/删除的写法是类似的,只是SQL略有区别而已.MySql批量操作需要数据库连接配置a ...
- MyBatis多对多查询
-------------------siwuxie095 MyBatis 多对多查询 以订单和商品为例,即 一个订单可 ...
- MySQL多表查询回顾
----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_custom ...
- 基于对象的跨表查询,多对多查询,多对多操作,聚合查询和分组查询,F查询和Q 查询
基于对象的跨表查询 一对多查询(班级表和学生表) 表结构创建 class Class(models.Model): id = models.AutoField(primary_key=True) cn ...
随机推荐
- git工作简要流程
1.在线上创建新的功能分支,更新到本地: git pull 2.切换分支: git checkout branch-name 3.去代码编辑器开始你的表演 4.添加代码到缓冲区以备提交: git ad ...
- 欢迎使用Markdown编辑器
#欢迎使用Markdown编辑器 你好 ,这是我第一次使用Markdown编辑器所展示的页面.如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识. ...
- Centos6.6安装MySQL5.6.24
1.首先需要编译器gcc 编译器和cmake yum -y install gcc+ gcc-c++ cd /usr/local/src wget http://www.cmake.org/files ...
- First-hitting-time model
见wiki: https://en.wikipedia.org/wiki/First-hitting-time_model
- 神经风格转换Neural Style Transfer a review
原文:http://mp.weixin.qq.com/s/t_jknoYuyAM9fu6CI8OdNw 作者:Yongcheng Jing 等 机器之心编译 风格迁移是近来人工智能领域内的一个热门研究 ...
- centos7安装mxnet
pip install mxnet-cu90 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 安装sklearn时总报错 ...
- php内置函数分析之array_fill_keys()
PHP_FUNCTION(array_fill_keys) { zval *keys, *val, *entry; if (zend_parse_parameters(ZEND_NUM_ARGS(), ...
- POJ2942 UVA1364 Knights of the Round Table 圆桌骑士
POJ2942 洛谷UVA1364(博主没有翻墙uva实在是太慢了) 以骑士为结点建立无向图,两个骑士间存在边表示两个骑士可以相邻(用邻接矩阵存图,初始化全为1,读入一对憎恨关系就删去一条边即可),则 ...
- 封装插件并发布到npm的历程
1.封装插件 2.使用webpack打包的时候发生了很多问题 3.过程很反复 4.但最终还是发布成功了
- JWT--无状态单点登录
序言 传统的 seesion 认证存在的问题: 1)用户信息存储在内存中,用户规模大之后增加服务器开销:2)由于登录信息存储在内存中,限制了登录机器,不利于分布式站点. JWT JWT无状态登录 常规 ...