2011-10-11 48 views
0

我有兩個相似的sql語句,它們返回運行特定文件名的計算機名稱,例如, OUTLOOK.EXE和EXCEL.EXE他們都會單獨返回計算機名稱,但我想看看同時運行的計算機。我有一個查詢,但它是時間密集型的,運行並運行並運行。任何想法如何在更簡化的版本中簡化這兩個查詢。這裏是查詢的一個例子,因爲它們是相同的,我只是展示一個。將兩個時間密集型SQL查詢合併爲一個更精簡的

select CompName, FileName, FileDescription, FileVersion, FileSize, FileModifiedDate, FilePath 
From Table 
join Table on SYRID = SFID 
Where FileName LIKE 'OUTLOOK.EXE' AND SF.FileVersion LIKE '14.%' AND FilePath LIKE 'C:\Program Files%' 
ORDER BY CompName 

爲了保護隱私,我重命名了所有內容,但查詢的笑話在那裏。我有第二個只是爲了不同的文件名。任何建議都會很棒。

+0

當需要完全匹配時,我不會使用「Like」語句。對於表格等索引等信息,您也沒有任何跡象。 –

回答

1
select compname from 
(
     select CompName 
     From Table 
     Where (FileName = 'OUTLOOK.EXE' AND SF.FileVersion LIKE '14.%') 
     OR (FileName = 'EXCEL.EXE' AND SF.FileVersion LIKE '12.%') 
     AND FilePath LIKE 'C:\Program Files%' 
) 
having count(*) > 1 
group by compname 
ORDER BY CompName 
+0

我想要一個「AND」而不是「OR」b/c我正在尋找在一臺計算機上運行,​​而不是或者。我不確定它是否可以解決我的時間密集型問題,但它確實可以將它們結合起來。 –