繁体   English   中英

MYSQL如果值不存在,则将值插入另一个表

[英]MYSQL Insert values into another table if values not exists

我正在从一个Mysql表写入另一个表,并且需要检查要插入的值是否已经存在。 我曾尝试在两列我检查的值作为指数( onhandSales_OrderonhandSKU

这是我的查询:

INSERT INTO onhand(Sales_Order, SKU, Inventory, Time)
  SELECT Sales_Order, Part_Number, '0', Now() AS DateTimeStamp from 
  fullfillment_sage WHERE New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL
WHERE NOT EXISTS (SELECT 
  `fullfillment_sage`.`Sales_Order`, 
  `fullfillment_sage`.`Part_Number`
   FROM `fullfillment_sage`
   LEFT JOIN `onhand`
   ON `fullfillment_sage`.`Sales_Order` = `onhand`.`Sales_Order`
   AND `fullfillment_sage`.`Part_Number` = `onhand`.`SKU` 
   WHERE `fullfillment_sage`.`New_OnHand` IN (-1, 0, 'NULL') OR 
   `fullfillment_sage`.`New_OnHand` IS NULL);

查询错误在这里:

 'WHERE NOT EXISTS (SELECT `fullfillment_sage`.`Sales_Order`, 

您的外部select中有两个where语句。 将()中的第一个包裹在您的或中,然后将第二个位置更改为与。

INSERT INTO onhand(Sales_Order, SKU, Inventory, Time)
  SELECT Sales_Order
       , Part_Number
       , 0
       , Now() AS DateTimeStamp 
  FROM fullfillment_sage 
  WHERE (New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL)
    AND NOT EXISTS (SELECT `fullfillment_sage`.`Sales_Order`
                         , `fullfillment_sage`.`Part_Number`
                    FROM `fullfillment_sage`
                    LEFT JOIN `onhand`
                      ON `fullfillment_sage`.`Sales_Order` = `onhand`.`Sales_Order`
                     AND `fullfillment_sage`.`Part_Number` = `onhand`.`SKU` 
                    WHERE `fullfillment_sage`.`New_OnHand` IN (-1, 0, 'NULL') 
                      OR  `fullfillment_sage`.`New_OnHand` IS NULL);

假设选择没有其他问题,我还没有仔细研究过。

我不认为应该插入字符串'0'的清单,而应该将其插入0。尽管隐式强制转换可能会帮助您。

也许new_onhand需要消除'null',因为您有or ....,或者您可以将(New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL)更改为... coalesce(New_OnHand,0) IN (-1, 0)如果New_Onhand为null,请将其设置为零,并确保new_onhand为-1或0。

如注释中提到的@juergend d, insert不支持where 我建议您创建一个if语句来检查此数据集是否存在。 如果不是,请执行inesert查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM