簡體   English   中英

查詢更新無條件的第一列,僅在滿足特定條件時更新另一列

[英]Query to update 1 column with no condition and another column only if certain condition is met

我有以下SQL Server查詢來更新tblTicket中的列類型:

    UPDATE A set type=B.type
    FROM  tblTicket A 
    JOIN (select b.tblTicket_id,a.type
        from tblP a
        JOIN tblA b ON a.allocation_id = b.id
        WHERE b.tblTicket_id =@tblTicket_id Group By b.tblTicket_id,a.type) B
    ON A.id=b.tblTicket_id

我也想更新表tblTicket中的列出價,但前提是a.name =“ ML”:

        UPDATE A set bid = B.id
        FROM  tblTicket A 
        JOIN (select b.tblTicket_id,f.id
        FROM tblP a
        JOIN tblA b ON a.allocation_id = b.id
        JOIN FIRM f ON f.firm = a.firm
        WHERE b.tblTicket_id =@tblTicket_id and a.name = 'ML' Group By b.tblTicket_id,f.id) B
        ON A.id=b.tblTicket_id

我可以結合上面的第一查詢和第二查詢嗎? 謝謝。

如果滿足特定條件,則可以使用CASE更新列,否則可以使用相同的值“設置”該列。

“最佳實踐”技巧:在嵌套查詢中避免使用相同的別名(即使從大寫切換為小寫,反之亦然)。

UPDATE A set type=B.type,
             bid = case when a.name = 'ML' then B.id else bid end
FROM  tblTicket A 
JOIN (select b.tblTicket_id,a.type
    from tblP a
    JOIN tblA b ON a.allocation_id = b.id
    WHERE b.tblTicket_id =@tblTicket_id Group By b.tblTicket_id,a.type) B
ON A.id=b.tblTicket_id

暫無
暫無

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

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