写查询的时候,查 A 表数据,条件是 A.a 等于 B.b(这个也是个查询)
select * from A where A.a=( select b From B WHERE b.c='')
也就是 select 嵌套和 left join 写法有什么区别么
效率等方面
1
jason2017 2017-10-11 16:41:00 +08:00
先吐槽一下:
b.c 是啥? 也不说下是 mysql 还是 oracle。 你这个语句,( select b From B WHERE b.c='')如果查出多条你猜会报什么错? 推测一下,你应该问的是 exists 用法。 |
2
msg7086 2017-10-11 16:44:05 +08:00
SQL 的具体实现是软件决定的。可能 Oracle 秒出的结果,MySQL 要暴力搜半天。
|
3
saulshao 2017-10-11 16:48:47 +08:00
与 Join 有区别的,SQL 的写法数学基础来自于集合论。
子查询的优点是写法更直观(肉眼可读),并且有助于逻辑分析。 但是不是所有的都适合写子查询,大多数时候,子查询都应该写为 A.a in 而不是 A.a = |
4
neoblackcap 2017-10-11 16:50:40 +08:00
如果效果等价的话,现在很多查询优化器都是可以直接优化成一样的,具体你可以用 explain 命令看看。
|
6
jason2017 2017-10-11 17:01:28 +08:00
|