2014-04-11 139 views
0

我試圖檢查值是否存在;問題是我不想爲速度問題運行查詢兩次。有沒有人知道如何得到這個查詢的結果而不運行兩次?見下面的例子。檢查查詢是否存在並獲得結果(1查詢)

if exists(select [row1],[row2] from [tablename] where [row2] = 'myvariable') 

BEGIN 
    PRINT 'EXISTS' 
    // -- GET VALUE OF ROW 2 without running another query 
END 
ELSE 
BEGIN 
    PRINT 'DOES NOT EXIST' 
END 
+0

是否真的意味着行不應該是列?整個問題似乎將這些概念混合起來。 –

回答

3

一種可能性:使用臨時表。

SELECT [row1] 
     , [row2] 
INTO #tmp 
FROM [tablename] 
WHERE [row2] = 'myvariable' 


IF EXISTS (SELECT * 
      FROM #tmp) 
    BEGIN 
     PRINT 'EXISTS' 
     SELECT row2 
     FROM #tmp t 
    END 
ELSE 
    BEGIN 
     PRINT 'DOES NOT EXIST' 
    END 
0

爲了提高速度,並避免查詢兩次相同的數據,請嘗試這樣做。它只在邏輯檢查中返回一行,而不必從表格中提取數據。在這種情況下,當列[row2] ='myvariable'

if exists(select top 1 'whatever' from [tablename] where [row2] = 'myvariable') 

    BEGIN 
     PRINT 'EXISTS' 
     // -- GET VALUE OF ROW 2 without running another query 
    END 
    ELSE 
    BEGIN 
     PRINT 'DOES NOT EXIST' 
    END 
+0

你也可以用'SELECT 1 FROM ...'去 – Kapol