mysql 左连接的表的条件放在左连接表后和where的区别


SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID and b.name='lkjl'


SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID where b.name='lkjl'

第一个查询出来的是table1的所有数据并左关联table2

第二个是在查询出table1左关联table2之后的数据中筛选左关联table2中符合tb.name='lkjl'的数据

 

sql 测试

SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID  and b.name='lkjl'


SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID  where b.name='lkjl'


SELECT a.id,a.name,b.name FROM `table1` as a
INNER join table2 AS B on A.ID=B.ID  and b.name='lkjl'

SELECT a.id,a.name,b.name FROM `table1` as a
INNER join table2 AS B on A.ID=B.ID  where b.name='lkjl'

SELECT a.id,a.name,b.name FROM `table1` as a
INNER join table2 AS B on A.ID=B.ID 
 where a.name='是多少啊'
 
 SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID 
 where a.name='阿瑟东'
 
  SELECT a.id,a.name,b.name FROM `table1` as a
left join table2 AS B on A.ID=B.ID 
 
 select table1.name,table2.name from table1,table2 where table1.id=table2.id

 select table1.name,table2.name from table1,table2

---table1
/*
 Navicat Premium Data Transfer

 Source Server         : 呵呵
 Source Server Type    : MySQL
 Source Server Version : 50724
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50724
 File Encoding         : 65001

 Date: 13/08/2019 09:08:42
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for table1
-- ----------------------------
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name_t` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `place_order_time` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of table1
-- ----------------------------
INSERT INTO `table1` VALUES (1, '是多少啊', '西安', NULL);
INSERT INTO `table1` VALUES (2, '', '北京', NULL);
INSERT INTO `table1` VALUES (3, '阿瑟东', '撒的', '2019-08-13 09:01:14');

SET FOREIGN_KEY_CHECKS = 1;


--table2

/*
 Navicat Premium Data Transfer

 Source Server         : 呵呵
 Source Server Type    : MySQL
 Source Server Version : 50724
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50724
 File Encoding         : 65001

 Date: 13/08/2019 09:08:51
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for table2
-- ----------------------------
DROP TABLE IF EXISTS `table2`;
CREATE TABLE `table2`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name_t` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `place_order_time` datetime(0) NOT NULL,
  `creat_time` varchar(21) CHARACTER SET utf8 COLLATE utf8_general_ci GENERATED ALWAYS AS (concat(`name`,'-',`name_t`)) VIRTUAL NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of table2
-- ----------------------------
INSERT INTO `table2` VALUES (1, 'ljkikl', 'kjljkl', '2019-07-24 18:10:29', DEFAULT);
INSERT INTO `table2` VALUES (2, 'lkjl', 'jkl', '2019-07-24 18:10:43', DEFAULT);

SET FOREIGN_KEY_CHECKS = 1;

MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM