- hive
测试数据
CREATE TABLE users(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
CREATE TABLE dept(id int,user_id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
INSERT INTO users
SELECT 1,'张三'
union all
SELECT 2,'李四'
union all
SELECT 3,'王二';
INSERT INTO dept
SELECT 1,1,'主管'
union all
SELECT 2,3,'员工';
SELECT * from users;
SELECT * from dept;
SELECT * from users u LEFT JOIN dept d on u.id=d.user_id and u.id>1;
SELECT * from users u LEFT JOIN dept d on u.id=d.user_id and d.id>1
- mysql
测试数据
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of user
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES (1, '张三');
INSERT INTO `user` VALUES (2, '李四');
INSERT INTO `user` VALUES (3, '王二');
-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of dept
-- ----------------------------
BEGIN;
INSERT INTO `dept` VALUES (1, 1, '主管');
INSERT INTO `dept` VALUES (2, 3, '员工');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
测试sql
SELECT * from user u left JOIN dept d on u.id=d.user_id and u.id>1
SELECT * from user u left JOIN dept d on u.id=d.user_id and d.id>1
结论:后的and条件只对右表(被驱动表)起作用,mysql 和hive 一样