初级问题:INNER JOIN vs WHERE

of123 2004-09-03 11:32:05
下列语句有什么不同?

SELECT * FROM table1, table2 WHERE table1.id = table2.id

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id
...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumylove1234 2004-09-03
  • 打赏
  • 举报
回复
2个语句的效果是一样的,但是显现的过程不同,第一个是先把2个表作笛卡儿挤处理,然后按照where的条件抽出满足条件的记录,而第二个没有进行笛卡尔基处理

这位朋友好像说反了.
使用Join的语句是作笛卡尔积操作,但不是完全的关联,是根据Where条件关条的.

根据我的理解.使用where A.ID=B.ID
的方法,在A表中顺序查找,然后取出A.ID,到B表中按照索引去找B.ID,找到则提取记录到内存.
而Inner Join的,我的理解是,呵,如果单纯的就是像你上边的一个条件的话,我认为道理是一样的.但是如果表比较多的话,我认为Join能提高性能!
starsoulxp 2004-09-03
  • 打赏
  • 举报
回复
renjunjun 2004-09-03
  • 打赏
  • 举报
回复
一看你两星就知道问题不简单了

在实际中,应该是第二个效率高一些,因为它使用两个关键字来连接两表,而不象第一个采用Where进行条件查询

而且,第二条可以采用左联或右联来轻松实现更复杂的查询要求,语法上显得更直观,不需要设计很复杂的Where条件.
bladeinside 2004-09-03
  • 打赏
  • 举报
回复
看看
RUKYO 2004-09-03
  • 打赏
  • 举报
回复
不知道哪个效率高些?是第二吗?
RUKYO 2004-09-03
  • 打赏
  • 举报
回复
效果是一样的。
第一条是先取所有值再根据各自id是否相同来排他。

第二条是根据各自id产生的交集来联结两表
apple1980 2004-09-03
  • 打赏
  • 举报
回复

Inner Join
Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。
内联接是用比较运算符比较要联接列的值的联接。


是不是,两SQL语句,内部查找的方法不一样呀?
第一个,是分别读取两个表进来




haohaohappy 2004-09-03
  • 打赏
  • 举报
回复
SELECT * FROM table1, table2 WHERE table1.id = table2.id
返回table1,table2中ID相同的记录集

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id
表示是内部联合,这种联合没有where语句。在这里你使用的语法中的JOIN ON 不是ANSI 标准中所指定的,而是我们所使用的解释器的附加语法.
表示把table1,table2中ID相同的记录进行了组合.

希望对你有帮助。
lele2002 2004-09-03
  • 打赏
  • 举报
回复
2个语句的效果是一样的,但是显现的过程不同,第一个是先把2个表作笛卡儿挤处理,然后按照where的条件抽出满足条件的记录,而第二个没有进行笛卡尔基处理
LGYAN 2004-09-03
  • 打赏
  • 举报
回复
第一句是找出table1和table2的ID相同的记录。
LGYAN 2004-09-03
  • 打赏
  • 举报
回复
那我也来抢一抢
of123 2004-09-03
  • 打赏
  • 举报
回复
呵呵,如果星期一还没有人回复,100分就是你的了。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧