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表是关系表的情况。
