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 leid = r.id
图⽚:
请点击输⼊图⽚描
请点击输⼊图⽚描述
注1:user(⽤户表),sys_role(⾓⾊表),sys_user_role(关系表)。
表1:user(下图)
请点击输⼊图⽚描述
表2:sys_role(下图)
请点击输⼊图⽚描述
sql语句查询不包含表3:sys_user_role(下图)
请点击输⼊图⽚描述
请点击输⼊图⽚描述
算了,建表语句也给你们了,你们⾃⼰测试,这样更详细,(程序员)多动⼿,⽐什么都好。(下⾯代码区)
1-- ----------------------------
2-- Table structure for user(⽤户表)
3-- ----------------------------
4DROP TABLE IF EXISTS `user`;
5CREATE TABLE `user` (
6 `id` INT(11) NOT NULL AUTO_INCREMENT,
7 `username` VARCHAR(50) DEFAULT NULL,
8 `password` VARCHAR(50) DEFAULT NULL,
9 `birthday` VARCHAR(50) DEFAULT NULL,
10 PRIMARY KEY (`id`)
11) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
12
13SELECT * FROM USER;
14
15INSERT INTO `user` VALUES ('1', 'lucy', '123', '2019-12-12');
16INSERT INTO `user` VALUES ('2', 'tom','123', '2019-12-12');
17
18
19-- ----------------------------
20-- Table structure for sys_role(⾓⾊表)
21-- ----------------------------
22DROP TABLE IF EXISTS `sys_role`;
23CREATE TABLE `sys_role` (
24 `id` INT(11) NOT NULL AUTO_INCREMENT,
25 `rolename` VARCHAR(255) DEFAULT NULL,
26 `roleDesc` VARCHAR(255) DEFAULT NULL,
27 PRIMARY KEY (`id`)
28) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
29
30SELECT * FROM sys_role;
31
32-- ----------------------------
33-- Records of sys_role
34-- ----------------------------
35INSERT INTO `sys_role` VALUES ('1', 'CTO', 'CTO');
36INSERT INTO `sys_role` VALUES ('2', 'CEO', 'CEO');
37
38
39-- ----------------------------
40-- Table structure for sys_user_role
41-- ----------------------------
42DROP TABLE IF EXISTS `sys_user_role`;
43CREATE TABLE `sys_user_role` (
44 `userid` INT(11) NOT NULL,
45 `roleid` INT(11) NOT NULL,
46 PRIMARY KEY (`userid`,`roleid`),
47 KEY `roleid` (`roleid`),
48 CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `sys_role` (`id`),
49 CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`roleid`) REFERENCES `user` (`id`)
50) ENGINE=INNODB DEFAULT CHARSET=utf8;
51
52SELECT * FROM sys_user_role;
53
54-- ----------------------------
55-- Records of sys_user_role
56-- ----------------------------
57INSERT INTO `sys_user_role` VALUES ('1', '1');
58INSERT INTO `sys_user_role` VALUES ('2', '1');
59INSERT INTO `sys_user_role` VALUES ('1', '2');
60INSERT 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表是关系表的情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论