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表是關係表的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章