我有一个MySQL数据库,有两个表(实际上还有更多).第一个表将产品的SKU编号链接到任意ID.第二个表根据此ID记录每个项目的日终库存.当库存因销售以外的原因而更改时,在第二个表中放置一条记录,其布尔值设置为false.这让我可以说这个新号码无效作为之前销售的矢量,但是用于第二天的销售.
此代码中存在一些语法错误.我还是一名学生,非常感谢帮助解释这种更新是如何工作的.我知道第一个值需要来自select语句吗?
这是我目前的MySQL声明:
REPLACE INTO sales (`itemID`, `date`, `qty`, `price`)
VALUES ([itemID], CURDATE(), [qty], 0.00)
SELECT itemID FROM item WHERE `sku` = [sku]
Run Code Online (Sandbox Code Playgroud)
pio*_*trm 18
替换像插入一样的工作,除非您尝试插入具有相同键的行,它将在替换时删除而不是给您一个错误.
您可以直接指定参数:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
VALUES( 15, '2012-01-01`, 5, '120.00' )
Run Code Online (Sandbox Code Playgroud)
或使用SELECT指定它们:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
SELECT item_id, date, qty, price FROM sales_to_accept
WHERE sales_id = 721
Run Code Online (Sandbox Code Playgroud)
但是,您不能在一个查询中混合使用这两种语法.
但是没有什么可以阻止你将常量值添加为SELECT的列:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
SELECT item_id, CURDATE(), 5, '74.00' FROM item
WHERE `sku` = 'something'
Run Code Online (Sandbox Code Playgroud)