2015-01-21 102 views
1

我在嘗試使用WHERE子句條件的多個值編寫SQL語句時遇到了一些問題。所以基本上我會在地圖上繪製一個緩衝區,它會返回一個eventID列表。SQL語句有多個值的WHERE子句條件

所以我創造了這個SQL語句,並測試了它:

SELECT count(*) AS totalRaces, a.races FROM bookedevent be INNER JOIN 
account a 
ON be.bookedEventBY = a.accountName 
WHERE be.eventID = 70 OR be.eventID = 69 OR be.eventID = 55 
GROUP BY a.races 

它的工作原理。但是,這個SQL語句只能用於3個eventID。對於某些緩衝區,它可能會返回我最多10個eventID。那麼在這種情況下我應該如何格式化?

在此先感謝。

+1

看起來並不像你這樣在這一個任何研究,只是作爲一個音符,一個簡單的谷歌搜索與你的問題將返回稱號正確的答案 – 2015-01-21 07:35:48

回答

5

使用IN條款

SELECT count(*) AS totalRaces, a.races FROM bookedevent be INNER JOIN 
account a 
ON be.bookedEventBY = a.accountName 
WHERE be.eventID in(70,69,55) 
GROUP BY a.races 
0

你需要使用動態SQL。

然後,您可以將您的eventID列表作爲逗號分隔列表傳遞。然後,您可以動態地改變在IN cluse項目數

declare @Events as varchar(1000) 
    declare @SQL as varchar(1000) 

    Select @Events = '55, 60, 70' 

    select @SQL = 'SELECT count(*) AS totalRaces, a.races 
    FROM bookedevent be 
    INNER JOIN account a ON be.bookedEventBY = a.accountName 
    WHERE be.eventID in (' + @Events + ') 
    GROUP BY a.races' 

    Exec (@SQL); 
+0

這是一個動態查詢的糟糕用例,在這裏不需要。 – 2015-01-21 08:32:28

+0

我剛剛用它作爲你如何使用動態SQL來解決這些問題的例子。我明白這是過度的 – Ewan 2015-01-21 08:37:34