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;