簡體   English   中英

用SQL更新多行

[英]update multiple rows with SQL

我有兩張桌子

student:
(student_id, student_name)

license:
(license_id, student_id)

我有學生證的清單(例如“ 3,4,5”)

我想更新表許可證中的3(列表大小)行,並將它們的student_id字段分別從null更改為3、4、5。

我怎么做? 運行更新循環對我來說不是合適的解決方案。 提前致謝。

我有一個ID解析器的MS SQL版本。 您可以使用此方法生成一個表,該表具有一個包含您的ID的單列,並且該列的參數類型為varchar(max)。 您可以在選擇語句上使用它,例如

SELECT * FROM TABLENAME
WHERE COLUMNAME IN (SELECT value FROM parseIDs ('1,2,3'))

這是函數:

CREATE FUNCTION parseIDs  
(
    @IDList VARCHAR(MAX)
)
RETURNS @IDs TABLE (value VARCHAR(80))
AS
BEGIN
    IF @IDList is null
        RETURN

    DECLARE @Len INT, 
            @Pos INT, 
            @Cur INT

    SELECT @Pos = 0, 
           @Len = 0, 
           @Cur = 1, 
           @IDList =  CASE 
                        WHEN SUBSTRING(@IDList, LEN(@IDList), 1) = ',' THEN @IDList 
                        ELSE @IDList + ',' 
                      END

    SELECT @Pos = CHARINDEX( ',', @IDList, @Cur)
    WHILE (@Pos <> 0)
    BEGIN
        INSERT @IDs VALUES (LTRIM(SUBSTRING( @IDList, @Cur, (@Pos - @Cur))))
        SELECT @Cur = @Pos + 1
        SELECT @Pos = CHARINDEX( ',', @IDList, @Cur)
    END
    return
END

暫無
暫無

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

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