当前位置:数据库 > MySQL >>

一个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查询语句的问题

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,