关于sql查询的问题
如下selecta.*fromtest1a,test2b,表a中有数据,表b中没有数据,但是查出来的结果为空,请问这是为什么?能不能帮忙解释一下。...
如下select a.* from test1 a,test2 b,表a中有数据,表b中没有数据,但是查出来的结果为空,请问这是为什么?能不能帮忙解释一下。
展开
展开全部
一、你的代码
select a.* from test1 a,test2 b
将被系统看作是这样的一个查询:
从表A中取出第1条记录,与表B中的所有的记录组合并列出来。
再从表A中取出第2条记录,与表B中的所有的记录组合并列出来。
再从表A中取出第3条记录,与表B中的所有的记录组合并列出来。
……
再从表A中取出第最后1条记录,与表B中的所有的记录组合并列出来。
二、现在,你的情况是B表中没有数据,所以有:
从表A中取出第1条记录,与表B中的所有的记录组合并列出来。因为B表为空,所以列不出。
再从表A中取出第2条记录,与表B中的所有的记录组合并列出来。因为B表为空,所以列不出。
再从表A中取出第3条记录,与表B中的所有的记录组合并列出来。因为B表为空,所以列不出。
……
再从表A中取出第最后1条记录,与表B中的所有的记录组合并列出来。因为B表为空,所以列不出。
--结果就是,一条记录也没有列出来!
三、我这样说你明白了吗?你还可以在B表中追加1条记录,再试着运行你的语句,再追至有2条记录后,再试,你就会更明白了。
四、一般而言,多数情况下,你的语句应该是类似浆紫的:
select a.* from test1 a,test2 b where a.id=b.id
更标准的写法是:
select a.* from test1 a join test2 b on a.id=b.id
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询