理解MySQL 的「操作數應包含1 列」錯誤
MySQL 的錯誤訊息「操作數應包含1 列」指示與INSERT 語句的SELECT中使用的子查詢傳回的列數相關的語法錯誤
在此特定實例中,當嘗試使用連接兩個表(temp_cheques 和BOOK)的SELECT 子句將記錄插入VOUCHER 表時,用戶遇到此錯誤。查詢嘗試將 SELECT 子句中的多個欄位(數字、ID 和 DENOMINATION)插入到單一欄位 (VOUCHER_NUMBER) 中。
修正語法
要解決該錯誤,使用者需要確保 SELECT 子句只傳回一列,該列將成為 INSERT 語句中目標列的值。實現此目的的一種方法是根據提供的答案中突出顯示的正確語法從SELECT 子句中刪除括號:
INSERT INTO VOUCHER (VOUCHER_NUMBER) SELECT a.number FROM temp_cheques a, BOOK b WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;
其他注意事項
In除了更正語法之外,重要的是要注意有關交叉引用操作的警告,如果BOOK 和temp_cheques 都包含許多內容,則會導致潛在的大型查詢行。若要允許查詢執行,可能需要在執行之前設定 SQL_BIG_SELECTS = 1,如答案中所述。
以上是為什麼我的 MySQL INSERT 語句出現「運算元要包含 1 個欄位」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!