簡體   English   中英

在 mySQL 中創建插入 select 查詢時出現問題

[英]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 deviceORDER 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM