我正在使用SQL Server 2008.我在這裏有2個表。參考表數據匹配和插入的存儲過程
shades_table color_name category location Aqua Blue House A Denim Blue House B Azure Blue House B Zaffre Blue House A Scarlet Red House C Ruby Red House D Chili Red House D Crimson Red House A objects_table object_name color_cat location2 Super Aqua shoes Null Null Azure wallet Null Null Awesome Scarlet chair Null Null Ruby socks Null Null Sparkly Denim chalk Null Null Chili paper Null Null Zaffre vase Null Null Sharp Crimson eraser Null Null Crimson watch Null Null Excellent Scarlet bucket Null
我有一個名爲shades_table的參考表。一列包含color_name,另一列包含顏色的類別。
我正在處理objects_table。 object_name列包含顏色名稱。我想要一個過程/程序自動將color_names與Object_name相匹配,然後更新color_cat列中的空值。
我現在的方法是將shades_table導出到csv文件。然後,我寫了一個Java程序讀取csv文件,並輸出到SQL文件到服務器上運行:
UPDATE objects_table SET color_cat='Blue', location2 = 'House A' WHERE object_name LIKE '%Aqua%' AND color_cat IS NULL UPDATE objects_table SET color_cat='Blue', location2 = 'House B' WHERE object_name LIKE '%Denim%' AND color_cat IS NULL UPDATE objects_table SET color_cat='Blue', location2 = 'House B' WHERE object_name LIKE '%Azure%' AND color_cat IS NULL etc...
此方法,但它是愚蠢的,很麻煩。 我只是不知道如何編寫可以做我想要的SQL語句。
更新: 我添加了一個額外的列,我也想匹配(請參閱我的Java程序輸出)。帶2 SET的UPDATE語句不起作用。 例如
update o set o.color_cat = s.category, set o.location2 = s.location ...
不起作用, 給人「‘設置’關鍵字附近有語法錯誤。
好吧,我不知道正確的語法應更新 集a.color_cat = b.category, a.location2 = b.location ....我不應該第二次輸入SET。謝謝你,Unnikrishnan R,你是第一個回答。 –