根据不确定数量的orderId集合在order_details_Info表中查询itemId,用foreach如何写sql
时间: 2024-03-18 16:39:57 浏览: 122
用foreach来访问数组
如果要使用foreach循环,可以将输入的orderId集合转化为一个临时表,然后使用INNER JOIN语句将临时表与order_details_Info表连接,查询对应的itemId。具体来说,可以使用以下SQL语句:
```
DECLARE @orderIdList AS VARCHAR(MAX)
SET @orderIdList = 'orderId1, orderId2, orderId3' -- 输入的orderId集合,以逗号分隔
-- 将输入的orderId集合转化为临时表
DECLARE @orderIdTable AS TABLE (orderId VARCHAR(50))
INSERT INTO @orderIdTable
SELECT value FROM STRING_SPLIT(@orderIdList, ',')
-- 使用INNER JOIN语句查询对应的itemId
SELECT order_details_Info.itemId
FROM order_details_Info
INNER JOIN @orderIdTable AS orderIdTable
ON order_details_Info.orderId = orderIdTable.orderId
```
首先使用DECLARE语句定义了一个变量@orderIdList,用于存储输入的orderId集合。然后,使用DECLARE语句定义了一个临时表@orderIdTable,用于存储转化后的orderId值。在INSERT INTO语句中使用了SQL Server 2016及以上版本中的STRING_SPLIT函数,将输入的orderId集合以逗号为分隔符拆分成多个行,并插入到临时表中。
最后,使用INNER JOIN语句将临时表@orderIdTable与order_details_Info表连接,查询对应的itemId。通过这种方式,可以避免使用动态SQL语句,从而提高SQL查询的安全性。
阅读全文