SQL 多值语句 WHERE 子句条件
SQL statement WHERE clause condition with multiple values
我在尝试为 WHERE 子句条件编写具有多个值的 SQL 语句时遇到了一些问题。所以基本上我会在地图上绘制一个缓冲区,它会 return 给我一个 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 有效。对于某些缓冲区,它可能 return 我最多 10 个 eventID。那么在这种情况下我应该如何格式化呢?
提前致谢。
使用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
您需要使用动态SQL。
然后您可以将您的 eventID 列表作为逗号分隔列表传递。然后,您可以动态改变 IN 子句
中的项目数
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);
我在尝试为 WHERE 子句条件编写具有多个值的 SQL 语句时遇到了一些问题。所以基本上我会在地图上绘制一个缓冲区,它会 return 给我一个 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 有效。对于某些缓冲区,它可能 return 我最多 10 个 eventID。那么在这种情况下我应该如何格式化呢?
提前致谢。
使用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
您需要使用动态SQL。
然后您可以将您的 eventID 列表作为逗号分隔列表传递。然后,您可以动态改变 IN 子句
中的项目数 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);