猿问

两种sql 写法的区别,进来看看!

1 SELECT test_A.Id,test_B.Name FROM test_A LEFT JOIN test_B ON test_B.AId = test_A.Id WHERE test_A.Id = 3

2 SELECT Id,(SELECT NAME FROM test_B WHERE test_A.Id = test_B.AId) Name FROM test_A WHERE test_A.Id = 3

上面两种写法在联表方式上有区别吗? 还是两种写法一个意思?


跃然一笑
浏览 766回答 13
13回答

德玛西亚99

得出的结果应该是一样的,但是第二种性能差些,相当于test_a有几条数据都会去test_b表中查询一次,有N条就会查询N次。

慕容3067478

建议看一下执行计划

大话西游666

一样,但建议用上面left join的写法

HUWWW

感觉第二种写法比较怪,不易读;效率上也可能比第一种低,你可以执行试试。

喵喵时光机

用 explain 测试一下性能!

蓝山帝景

两者效果是一样的 联表跟内联查询其实很多时候可以实现等同的效果 至于性能的话,这个只能自己测试才知道 有些时候联表快 有些时候内联快   但可读性来说明显left join(联表)的可读性好点

慕婉清6462132

第二种没用过

慕雪6442864

感觉第二种效果好一点儿。

一只甜甜圈

有区别 ,如果test_a 对应在test_b表中有两条数据,第一种的结果就是两条数据,第二种就报错。性能上,数据量少,没什么区别。

一只萌萌小番薯

数据量大呢
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答