日期:2014-05-18  浏览次数:20430 次

case 语句返回结果筛选问题
select   a
=   case  
when   co1=‘x’,
then   .....

结果会有包含‘x '以外的纪录,其中co1=。。。的纪录   case语句会起作用.
有时候为了提高性能,想只得到’x '的纪录,
这样的case   语句怎样写?
如果只对   co=x   的纪录感兴趣,这样做会提高查询的性能吗?
如果在then   中加   where   只能对case的结果起作用。


------解决方案--------------------
只对 co=x 的纪录感兴趣
就在where 里写
where co= 'x '


------解决方案--------------------
1.首先CASE用得不太對:
應該 Select a=case col where 'x ' then ... else ... end
2.在這裏使用CASE對於效率沒有任何的幫助,因為CASE是加在每一條上的,並不能實際減少記錄量.
可以這樣處理 select ... from (select * from t where col= 'x ') t,這樣就行,如果你的SQL很簡單的話也可以不用這種嵌套,直接將條件放在WHERE子句中

------解决方案--------------------
SELECT ProductNumber, Category = 'Road ',Name
FROM Production.Product where ProductLine = 'R '
ORDER BY ProductNumber;