MySQL左链接问题,右表作筛选,左表列依然在

两张表,一张user表,一张user_log表php

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_log` (
  `id` int(10) NOT NULL,
  `user_id` int(10) NOT NULL,
  `log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `message` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'wang');
INSERT INTO `user` VALUES ('2', 'meng');
INSERT INTO `user` VALUES ('3', 'zhang');

-- ----------------------------
-- Records of user_log
-- ----------------------------
INSERT INTO `user_log` VALUES ('1', '1', '2017-07-20 13:13:07', 'some data');
INSERT INTO `user_log` VALUES ('2', '1', '2017-07-27 13:13:07', 'some data');
INSERT INTO `user_log` VALUES ('3', '1', '2017-07-28 13:13:07', 'some data');
INSERT INTO `user_log` VALUES ('4', '1', '2017-08-26 13:11:31', 'some data');
INSERT INTO `user_log` VALUES ('5', '1', '2017-08-26 17:11:31', 'some data');
INSERT INTO `user_log` VALUES ('6', '1', '2017-08-27 13:11:31', 'some data');

 这样就能够了code

SELECT U.*, UL.LOG_TIME, UL.MESSAGE
  FROM USER U
  LEFT JOIN USER_LOG UL
    ON U.ID = UL.USER_ID
   AND (UL.LOG_TIME > '2017-09-01 07:13:07' OR UL.LOG_TIME IS NULL)
 WHERE U.ID = 1;

把and放到left join on后面就能够了。class

相关文章
相关标签/搜索