SQL语句WHERE子句条件具有多个值

时间:2015-01-21 07:32:59

标签: mysql sql select where

尝试使用WHERE子句条件的多个值编写SQL语句时遇到了一些问题。所以基本上我会在地图上绘制一个缓冲区,它会返回一个eventID列表。

所以我创建了这个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。那么在这种情况下我应该如何格式化呢?

提前致谢。

2 个答案:

答案 0 :(得分:4)

使用 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

答案 1 :(得分: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);