left join 误区

上一篇 / 下一篇  2008-10-16 18:49:12 / 个人分类:易错的

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');

如果想只保留左表的记录数,可以通过左表的主键进行分组来实现!

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 503
  • 日志数: 42
  • 建立时间: 2008-07-24
  • 更新时间: 2008-12-30

RSS订阅

Open Toolbar