[英]How can I run a SQL query iteratively for every row in a table?
我有以下查詢:
DECLARE @AccString varchar(max)
SET @AccString=''
SELECT @Acctring=@AccString + description + ' [ ] '
FROM tl_sb_accessoryInventory ai
JOIN tl_sb_accessory a on a.accessoryID = ai.accessoryID
WHERE userID=6
SELECT userID, serviceTag, model, @AccString AS ACCESSORIES FROM tl_sb_oldLaptop ol
JOIN tl_sb_laptopType lt ON ol.laptopTypeID = lt.laptopTypeID
WHERE userID=6
輸出以下內容:
我想要做的是為表tl_sb_user中的每個userID運行此命令。
獲取用戶標識的語句是:
Select userID from tl_sb_user
我怎樣才能為每個用戶輸出如上所述的一行?
您正在嘗試執行字符串串聯子查詢。 在SQL Server中,您需要使用帶有for xml path
的相關子查詢來進行字符串連接。 奧術,但它通常有效。
結果是這樣的:
SELECT userID, serviceTag, model, @AccString AS ACCESSORIES,
stuff((select ' [ ] ' + description
from tl_sb_accessoryInventory ai join
tl_sb_accessory a
on a.accessoryID = ai.accessoryID
where a.userId = ol.UserId
for xml path ('')
), 1, 11, '') as accessories
FROM tl_sb_oldLaptop ol JOIN
tl_sb_laptopType lt
ON ol.laptopTypeID = lt.laptopTypeID;
您沒有表別名來標識列的來源,因此我只是猜測a.userId = ol.UserId
引用了正確的表。
同樣,這會將某些字符替換為html形式。 明顯地, '<'
和'>'
變成了'<'
類'<'
東西 和'>'
。 遇到此問題時,我使用replace()
替換值。
只需省略WHERE
子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.