我正在使用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,你是第一个回答。 –