1、left join对表的连接出来的记录条数不一定等于左表记录条数,下面的结果>左表记录条数
例如查询sql:
SELECT
*
FROM
userinfo u
left join message m
on(u.f_pass=m.u_id)
/*
MySQL Data Transfer
Source Host: localhost
Source Database: guestbook
Target Host: localhost
Target Database: guestbook
Date: 2008-10-16 19:19:33
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for userinfo
-- ----------------------------
CREATE TABLE `userinfo` (
`f_id` int(10) NOT NULL auto_increment,
`f_name` varchar(10) NOT NULL,
`f_pass` varchar(10) NOT NULL,
PRIMARY KEY (`f_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CH**T=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `userinfo` VALUES ('1', 'ahu1', '1');
INSERT INTO `userinfo` VALUES ('2', 'ahu2', '1');
INSERT INTO `userinfo` VALUES ('3', 'hehe', '2');
INSERT INTO `userinfo` VALUES ('4', 'ahu4', '2');
INSERT INTO `userinfo` VALUES ('5', 'ahu5', '3');
INSERT INTO `userinfo` VALUES ('6', 'ahu6', '4');
/*
MySQL Data Transfer
Source Host: localhost
Source Database: guestbook
Target Host: localhost
Target Database: guestbook
Date: 2008-10-16 19:19:21
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for message
-- ----------------------------
CREATE TABLE `message` (
`f_id` int(10) NOT NULL auto_increment,
`f_content` text NOT NULL,
`f_date` int(10) NOT NULL,
`u_id` int(10) NOT NULL,
PRIMARY KEY (`f_id`)
) ENGINE=InnoDB AUTO_INCREMENT=72 DEFAULT CH**T=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `message` VALUES ('8', 'hjgjhgj', '1216886038', '1');
INSERT INTO `message` VALUES ('10', 'fdsfdsf', '1216886435', '2');
INSERT INTO `message` VALUES ('11', 'fdsfdsf', '1216886451', '3');
INSERT INTO `message` VALUES ('16', 'ds', '1216887273', '3');
INSERT INTO `message` VALUES ('17', 'ds', '1216887297', '4');
INSERT INTO `message` VALUES ('18', 'dd', '1216887300', '4');
如果想只保留左表的记录数,可以通过左表的主键进行分组来实现!