日期:2014-05-17  浏览次数:20738 次

这条SQL和我想的不一样!
表是这样的

[img=http://my.csdn.net/wolililaile2/album/detail/1133399#][/img]


SELECT zal06 FROM zal_file A    
WHERE zal01 = 'cxcq430' AND zal06 IS NOT NULL      
AND zal03 = '2' AND zal07 = 'Y'
AND zal02 = (
SELECT MAX(B.zal02) FROM zal_file B                   
 WHERE B.zal01 = A.zal01 
 AND B.zal03=A.zal03                       
 AND B.zal06=A.zal06  AND B.zal07 = A.zal07
 ) 
 ORDER BY zal02


在子查询中 不是应该返回一个结果吗,但是我发现查出来的结果是对的,不过不太明白,高人指点一下
顺便有什么可以了解oracle的执行顺序
------最佳解决方案--------------------
夺分 走人~
------其他解决方案--------------------
表的数据图片在

http://my.csdn.net/wolililaile2/album/detail/1133399#
------其他解决方案--------------------
用max函数是返回一个结果啊,不知你想问啥。。。
------其他解决方案--------------------
SELECT zal06 FROM zal_file A   
WHERE zal01 = 'cxcq430' AND zal06 IS NOT NULL   
AND zal03 = '2' AND zal07 = 'Y'
AND zal02 = (
SELECT MAX(B.zal02) FROM zal_file B   
 WHERE B.zal01 = A.zal01  
 AND B.zal03=A.zal03   
 AND B.zal06=A.zal06 AND B.zal07 = A.zal07
 )  
 ORDER BY zal02

看楼主的这些条件是从外面传给子查询的,所以,你所谓返回一个结果,应该只是对于符合一条的条件,
并不是整个sql只有一个结果,所以你奇怪的是什么呢?

------其他解决方案--------------------
引用:
用max函数是返回一个结果啊,不知你想问啥。。。

楼主 还不知 max 是个聚合函数