한 Mysql 테이블에서 다른 테이블로 쓰고 있는데, 삽입하고있는 값이 이미 존재하는지 확인해야합니다. 값을 확인하는 두 열에 인덱스를 설정하려고했습니다 ( onhand
. Sales_Order
& onhand
. SKU
)
내 질문은 다음과 같습니다.
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`,
외부 선택에 두 개의 where 문이 있습니다. 첫 번째로 또는 ()로 감싸고 두 번째 위치를 and로 변경하십시오.
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 필요 당신이 나이 있기 때문에 '널'을 elimninate합니다 ....하거나 변경할 수 (New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL)
에 ... coalesce(New_OnHand,0) IN (-1, 0)
New_Onhand가 null이 0으로 설정 할 경우 반드시 new_onhand 중 하나 -1 또는 0.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다