[英]Select rows by one field and sort by another across multiple tables with mysql using PHP
[英]MySQL “REPLACE INTO” using a SELECT to pull one field
我有一個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]
替換像插入一樣的工作,除非您嘗試插入具有相同鍵的行,它將在替換時刪除而不是給您一個錯誤。
您可以直接指定參數:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
VALUES( 15, '2012-01-01`, 5, '120.00' )
或使用SELECT指定它們:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
SELECT item_id, date, qty, price FROM sales_to_accept
WHERE sales_id = 721
但是,您不能在一個查詢中混合使用這兩種語法。
但是沒有什么可以阻止你將常量值添加為SELECT的列:
REPLACE INTO sales( `item_id`, `date`, `qty`, `price` )
SELECT item_id, CURDATE(), 5, '74.00' FROM item
WHERE `sku` = 'something'
您正嘗試在同一語句中執行替換和選擇。 如果你想這個使用某種方案或簡單地將它輸入到MySQL運行,如果你把一個分號之后)
的值節結束時,它會將其視為2個獨立的請求。
如果您通過PHP運行它,那么您需要將其分解為兩個單獨的語句。
REPLACE INTO sales (`itemID`, `date`, `qty`, `price`)
VALUES ((SELECT itemID FROM item WHERE `sku` = [sku]), CURDATE(), [qty], 0.00)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.