我有一個查詢,我正在使用它來獲取正確的類別到新數據庫中的正確的廣告,但一些受影響的行可能有多個類別,而一些可能不會,研究給了我使用'table.column + your_data'的信息,似乎這帶有副作用,雖然它不會更新NULL列,即使它說適量的行受到影響..第二個數據庫的SQL更新沒有寫入當列爲空
的SQL:
MERGE INTO sites.dbo.ads
USING (
SELECT e.name
FROM Database1.dbo.education AS e
INNER JOIN releducationcategory AS re ON e.educationid = re.educationid
INNER JOIN category AS c ON re.categoryid = c.categoryid
INNER JOIN string AS s ON c.categoryid = s.identifier
WHERE (s.string = 'Biologi, Fysikk & Kjemi') AND (e.site = 'sd')
) AS source
ON Database2.dbo.ads.name COLLATE Finnish_Swedish_CI_AS = source.name COLLATE Finnish_Swedish_CI_AS
WHEN MATCHED THEN
UPDATE
SET sites.dbo.ads.category = ', biologi-fysikk-kjemi';
該更新運行良好時,該列是NULL,但是當已經有一個值,它會只是簡單地覆蓋..和WH恩我將其更改爲以下:
SET sites.dbo.ads.category = sites.dbo.ads.category + ', biologi-fysikk-kjemi';
,它只是更新不具有NULL值。但是它確實說,行同量的影響行。什麼呢?我應該做CASES嗎?
你願意詳細說明爲什麼這是一個壞主意嗎?爲了將來的知識.. 是否有一些'錯誤的地方?COALESCE(sites.dbo.ads.category +',') +'biologi-fysikk-kjemi';它應該是這樣嗎?或者我只是在閱讀錯誤的東西? – Jesper
它使寫入搜索更加複雜(並且這種搜索往往不能使用索引),它使更新和刪除更加複雜。 –
@Jesper - 是的,我錯過了一個'''出來了,我又加入了它。 –