本文主要是介绍SQL里3个表的连接查询的语句怎么写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、SQL语句:
select u.*,r.*,r.id rid
from user u left join sys_user_role sur on u.id = sur.userid
left join sys_role r on sur.roleid = r.id
图片:
-
请点击输入图片描
请点击输入图片描述
-
注1:user(用户表),sys_role(角色表),sys_user_role(关系表)。
表1:user(下图)
-
请点击输入图片描述
-
表2:sys_role(下图)
-
请点击输入图片描述
-
表3:sys_user_role(下图)
-
请点击输入图片描述
请点击输入图片描述
算了,建表语句也给你们了,你们自己测试,这样更详细,(程序员)多动手,比什么都好。(下面代码区)
-- ----------------------------
-- Table structure for user(用户表)
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT,`username` VARCHAR(50) DEFAULT NULL,`password` VARCHAR(50) DEFAULT NULL,`birthday` VARCHAR(50) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;SELECT * FROM USER;INSERT INTO `user` VALUES ('1', 'lucy', '123', '2019-12-12');
INSERT INTO `user` VALUES ('2', 'tom','123', '2019-12-12');-- ----------------------------
-- Table structure for sys_role(角色表)
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (`id` INT(11) NOT NULL AUTO_INCREMENT,`rolename` VARCHAR(255) DEFAULT NULL,`roleDesc` VARCHAR(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;SELECT * FROM sys_role;-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES ('1', 'CTO', 'CTO');
INSERT INTO `sys_role` VALUES ('2', 'CEO', 'CEO');-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (`userid` INT(11) NOT NULL,`roleid` INT(11) NOT NULL,PRIMARY KEY (`userid`,`roleid`),KEY `roleid` (`roleid`),CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `sys_role` (`id`),CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`roleid`) REFERENCES `user` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;SELECT * FROM sys_user_role;-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
INSERT INTO `sys_user_role` VALUES ('1', '1');
INSERT INTO `sys_user_role` VALUES ('2', '1');
INSERT INTO `sys_user_role` VALUES ('1', '2');
INSERT INTO `sys_user_role` VALUES ('2', '2');
2、SQL语句解释:
select a.*,b.*
from a表 a left join b表 b on a.id = b.aid
left join c表 c on b.cid = c.id
注2:此语句适合a表与c表连接,b表是关系表的情况。
这篇关于SQL里3个表的连接查询的语句怎么写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!