在练习mysql语句时遇到下面问题,请指教执行
(1)select first.Cno,second.Cpno from course first,course second where first.Cpno=second.Cno;
和执行
(2)select Cno,Cpno from course where Cpno=Cno;
的结果为什么不一样?在(1)中,
first和second是course的别名,
也就是说first和second是同一个表,
那么像(2)那样不用别名,
只在本表中查询,理论上而言,结果不是应该是相同的吗?
(1)select first.Cno,second.Cpno from course first,course second where first.Cpno=second.Cno;
和执行
(2)select Cno,Cpno from course where Cpno=Cno;
的结果为什么不一样?在(1)中,
first和second是course的别名,
也就是说first和second是同一个表,
那么像(2)那样不用别名,
只在本表中查询,理论上而言,结果不是应该是相同的吗?
这相当于where 1=1 和没加条件一样
2是同一行的2个字段来比较;
2 3
1 4
这样的表,你用第2个方法的话 不会出结果;
但是用到第一条的自连接的话,就可以出一条结果.手册中
13.2.7.1. JOIN语法
==》一个表内的2个字段如果相等,就列入到结果集。
course first和course second是两个单独的表啊,为什么要进行连接(关系代数)?
连接是是否是采用了一般连接?
我的语句里并没有出现 join啊
如果是有join我就容易理解了
join...on可以省略的.省略之后 表之间用逗号隔开, on用where 代替