SELECT a.QTY FROM A LEFT JOIN B WHERE A.BRAN 或 B.BRAN 的区别?方法一:SELECT a.QTY FROM A
LEFT JOIN B
WHERE A.BRAN LIKE '3' 返回7599行,方法二:
SELECT a.QTY FROM A
LEFT JOIN B
WHERE B.BRAN LIKE '3' 返回8689行我的理解:方法一应该返回行数多一些吧?方法二应该返回少一些吧,
因为方法一是直接从FROM A 来取数据的,
而方法二是LEFT JOIN B 貌似条件更苛求些。实际结果不然。
LEFT JOIN B
WHERE A.BRAN LIKE '3' 返回7599行,方法二:
SELECT a.QTY FROM A
LEFT JOIN B
WHERE B.BRAN LIKE '3' 返回8689行我的理解:方法一应该返回行数多一些吧?方法二应该返回少一些吧,
因为方法一是直接从FROM A 来取数据的,
而方法二是LEFT JOIN B 貌似条件更苛求些。实际结果不然。
解决方案 »
- 请教一个SQL语句
- 请教关于2个SQL的比较
- 请教:如何设置服务器在空闲时间进行数据统计分析
- pl/sql developer不支持分区表/索引
- 为什么我的oracle8i安装后启动DBAStudio总是说没有监听啊?
- 如何取得系统时间?拜托各位!
- 为什么我的oracle8中的sql*plus里面不能运行sqlldr?
- PL/SQL Developer (5.1.2.682) 是否不兼容Oracle Client (9.2.0.1.0)?
- 如何在 ORACLE SQL *PLUS 中建立存储过程?
- oracle启动异常
- 急~字符型转化成数值型,提示 无效数字
- 数据导入错误提示:预期值是 有效的列说明, "," 或 ")", 而实际值是 "job"。
方法一先连接表B,然后再再筛选掉A表中A.BRAN的模糊'3'结果筛选掉。
方法一先连接表B,然后再再筛选掉B表中B.BRAN的模糊'3'结果筛选掉。
如果A表中的数据量大于B表中的,那么一定是B表中返回的数据量大一些了。
SQL> select * from t1;NAME
----------
ab1
ab2
ab3
ab4
ab5已选择5行。SQL> select * from t2;NAME
----------
ab1
ab4
ab5已选择3行。SQL> SELECT *
2 FROM t1
3 LEFT JOIN t2
4 ON (t1.name = t2.name)
5 WHERE t1.name LIKE '%ab%';NAME NAME
---------- ----------
ab1 ab1
ab4 ab4
ab5 ab5
ab3
ab2已选择5行。SQL> SELECT *
2 FROM t1
3 LEFT JOIN t2
4 ON (t1.name = t2.name)
5 WHERE t2.name LIKE '%ab%';NAME NAME
---------- ----------
ab1 ab1
ab4 ab4
ab5 ab5已选择3行。SQL>
--方法一:
SELECT a.QTY
FROM A LEFT JOIN B
--这里应该还有一个连接条件
WHERE A.BRAN LIKE '3'--这写法等于a.bran='3'
返回7599行,方法二:
SELECT a.QTY
FROM A LEFT JOIN B
--这里应该还有一个连接条件
WHERE B.BRAN LIKE '3'--这写法等于b.bran='3'
--返回8689行
--
--两个方法都是左连接,即以A表为基准
--若是匹配的话:like '%3%'
--方法一
-- 以a表为准,查询a表中bran字段含有字符'3'的记录,
-- 并返回记录
--方法二
-- 还是以a表为基准,但是这次需要检查b表中bran字段
-- 是否含有字符'3',若含有且满足左连接的条件,
-- 就返回记录
--
--返回记录的行数是不确定的,这还得参照你当前的数据库表里面的数据
--不同的过滤条件,返回的结果可能相同,可能不同