我在MSSQL中有一个项目主表,其中包含SKU和与给定SKU相关联的所有颜色:
SKU | Color
-----------
100 | BLK
100 | GRN
101 | RED
101 | BLU
101 | TAN
然后我有一个具有相似结构的MySql表,但它有一个颜色(通过SKU),在项目主表中不存在,我需要删除它们。
这是我到目前为止(注意我使用OPENQUERY链接两个表):
SELECT * FROM OPENQUERY(WEB, '
SELECT SKU, `Filename`, Color
FROM IP24_Import_Images
') as B
INNER JOIN sap.ItemMasterSkuColor IM
ON B.SKU = IM.Sku
WHERE B.Color NOT IN (
SELECT Color FROM sap.Item_Master_StyleColor
WHERE Sku ....
我首先尝试选择它们然后我应该能够弄清楚如何从那里删除它们。但是我最后卡在那里..
显然WHERE B.Color != IM.Color
不起作用。如果我能以某种方式从外部查询中获取有问题的SKU,我上面的NOT IN ..
就可以了。我怎样才能正常工作?谢谢!
答案 0 :(得分:1)
你为什么不做像
那样的事情SELECT *
FROM IP24_Import_Images B
LEFT JOIN sap.ItemMasterSkuColor IM
ON B.SKU = IM.Style AND B.Color = IM.Color
WHERE IM.Color IS NULL
应该给你IM的所有记录,如果不匹配,B.color为NULL。
我希望mySQL与右连接具有相同的语法,因为这是MSSQL语法。