从表中选择项目主表中不存在字段的表

时间:2013-01-24 19:17:57

标签: mysql sql sql-server tsql

我在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 ..就可以了。我怎样才能正常工作?谢谢!

1 个答案:

答案 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语法。