簡體   English   中英

如何為表中的每一行迭代運行SQL查詢?

[英]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形式。 明顯地, '<''>'變成了'&lt;''&lt;'東西 '&gt;' 遇到此問題時,我使用replace()替換值。

只需省略WHERE子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM