一条静态SQL语句,请教SQL高手,执行结果诡异。
hwyqy 2014-08-22 06:27:42 这个问题可能有点难度,因为大家没有实际的操作环境去测试。SQL语句如下:
select * from LR where LRId in(
SELECT LR.LRId
FROM LR inner join groups on groups.groupid=lr.GroupId where
(GroupNo='ZHA140801C' and Amount= 3840) or
(GroupNo='ZHB140804A' and Amount= 5120) or (GroupNo='ZHS140805A ' and Amount= 6560) or
(GroupNo='ZHA140808C' and Amount= 5280) or (GroupNo='ZHA140811C ' and Amount= 3840) or
(GroupNo='ZHS140813A-1' and Amount= 9600) or (GroupNo='ZHS140813A' and Amount= 7920) or
(GroupNo='ZHS140816A' and Amount= 8880)
)
---其中GroupNo为Groups表中字段,唯一,Amout为LR表中字段,表示金额
问题
1、可能大家认为外围的Select是多余的,确实是的,本来是准备写Update的。但现在不管是不是多余,根据语法,我搞不懂为什么会出现以下的结果,结果如下:
2、in内部的Select单独执行时,搜索出9条LRId。
3、整个Select执行时,搜索出39条记录
4、修改表中数据的Amount,导致in内部的Select语句搜索记录为0条或1条....外围的Select仍旧为39条数据
我搞不懂到底问题出在哪儿