一个MySQL查询问题
DROP TABLE IF EXISTS `test_first`;
CREATE TABLE `test_first` (
`id` int(11) NOT NULL auto_increment,
`firstName` char(64) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of test_first
-- ----------------------------
INSERT INTO `test_first` VALUES ('1', 'zheng');
INSERT INTO `test_first` VALUES ('2', 'huang');
INSERT INTO `test_first` VALUES ('3', 'su');
INSERT INTO `test_first` VALUES ('4', 'hong');
INSERT INTO `test_first` VALUES ('5', 'li');
-- ----------------------------
-- Table structure for `test_last`
-- ----------------------------
DROP TABLE IF EXISTS `test_last`;
CREATE TABLE `test_last` (
`id` int(11) NOT NULL auto_increment,
`lastName` char(32) NOT NULL default '-',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of test_last
-- ----------------------------
INSERT INTO `test_last` VALUES ('1', 'zhi');
INSERT INTO `test_last` VALUES ('3', 'yong');
下面查询,结果集为什么为空?
SELECT test_first.id, test_first.firstName, ( select lastName from test_last,test_first where test_first.id=test_last.id ) as lastName
FROM test_first
追问:一条面试题来的。它的FROM那里就只有一个表,而SELECT 里面有两个表id相等,我那时候也觉得有问题,就回来测试了,但是不知道为什么会是空值。应该想要得到 id firstName lastName 三列结果集。要求FROM里只有一个表。
答案:同学,你的查询语句首先写的不太对吧,你是要找什么啊,是要把姓和名全列出来么,那应该是
SELECT test_first.id, firstName, lastName
FROM test_first RIGHT JOIN test_last ON test_first.id = test_last.id
其他:SELECT test_first.id, test_first.firstName,lastName,
FROM test_first left join test_last using(id)
where !isnull(test_last.lastName);
上一个:mysql数据库的两种引擎,哪一种速度更快?适合1000万及以上级的访问量?
下一个:关于mysql查询语句的问题