[英]Issue with creating insert select query in mySQL
我有以下 mySQL 查詢,我想在 PHP 腳本中執行:
$sql = "INSERT INTO InsertingTable1 (place, device, description, amount) SELECT `place`, `device`,`description`,`amount`
FROM Table1 INNER JOIN CheckingTable1
ON Table1.device = CheckingTable1.device
ORDER BY place ASC, device ASC" ;
我得到的錯誤是:
致命錯誤:未捕獲的異常 'mysqli_sql_exception' 帶有消息 'Column 'Device' in field list is ambiguous'
出現錯誤是因為兩個表都有一個device
列。 因此,當您SELECT device
或ORDER BY device
時,您的 RDBMS 無法評估應該使用哪一個。
您會爭辯說,由於您要跨表連接device
列,因此保證兩列的值相同; 在這種特定情況下確實如此,但您的 RDMBS 本身並不能說明這一點。
您需要在列前加上它來自的表。 此外,最好使用表別名來縮短查詢。 我在模棱兩可的列中添加了前綴,但我建議您為所有列添加前綴; 這使得查詢更容易理解。
INSERT INTO InsertingTable1 (place, device, description, amount)
SELECT place, t.device, description, amount
FROM Table1 t
INNER JOIN CheckingTable1 c ON t.device = c.device
ORDER BY place, t.device
注意: ASC
是默認排序順序,因此您可以不指定它。
如果要顯示設備列,如果第一個表名為 Table1。
Mysql 在錯誤消息中告訴您兩個 tabkles 都有這樣一個名為 de devices 的列
$sql = "INSERT INTO InsertingTable1 (place, device, description, amount) SELECT `place`, Table1.`device`,`description`,`amount`
FROM Table1 INNER JOIN CheckingTable1
ON Table1.device = CheckingTable1.device
ORDER BY place ASC, device ASC" ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.