我有這兩個表的 SQL 2019 - 帶有各自列的訂單和客戶
id,order_comment,customer_id
在訂單和
id,customer_name
在客戶。Order_comment 是 ntext 型別。我需要用 customer_name 值更新 order_comment。更新應該是這樣的:
update o set order_comment=concat(c.customer_name,';',o.order_comment)
from
orders o
left join customer c on c.id=o.customer_id
where o.id=1 and
convert(varchar(255),order_comment) not in
(select b.customer_name from customer b where o.customer_id=b.id)
如果 customer_name 已經是 order_comment 的一部分,則不應發生更新。當 order_comment 為空時,上述查詢可以正常作業。但是如果評論中已經有文本,它會不斷更新值。我應該如何更改查詢,以便當評論部分中已有文本時,更新只發生一次?
uj5u.com熱心網友回復:
有很多方法可以實作您的目標,當然最好的方法取決于您的設定和您的進一步目標。為了使您的更新宣告與您的嘗試盡可能相似,您可以這樣做:
UPDATE o SET order_comment=CONCAT(c.customer_name,';',o.order_comment)
FROM
orders o
LEFT JOIN customers c ON c.id=o.customer_id
WHERE o.order_comment IS NULL OR o.order_comment NOT LIKE CONCAT(c.customer_name,'%');
還有其他可能性,例如子選擇,不存在等,最好的主意是您嘗試最適合您的方法。您可以在此處查看此示例: 小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/461154.html
上一篇:我收到此錯誤訊息“傳遞給LEFT或SUBSTRING函式的長度引數無效。”
下一篇:如何在LINQ中放置條件
