[英]Why am I getting the error: "Ambiguous column" in my query?
在此查詢中,我將記錄插入到我創建的新空表中。 這些記錄派生自另一個表,我在該表中將該表與其自身連接起來,以便 output 條記錄未包含在附加在舊表之上的最新表中。 所以基本上它輸出已刪除的記錄。
CREATE DEFINER=`definer` PROCEDURE `stored_procedure_name`()
MODIFIES SQL DATA
SQL SECURITY INVOKER
BEGIN
START TRANSACTION;
INSERT INTO exceptions_table (
`insert_date`,
`updated`,
`account_number`,
`id_number`)
SELECT
`insert_date`,
`updated`,
`account_number`,
`id_number`
FROM original_table ot1
LEFT JOIN original_table ot2
ON ot1.`account_number` = vdcaas2.`account_number`
AND ot2.`insert_date` = '2022-12-20'
WHERE ot1.`insert_date` = '2022-12-10'
AND ot2.`account_number` IS NULL;
COMMIT;
END
我收到一條錯誤消息: "SQL Error: Column "insert_date" in field list is ambiguous
。
我不確定為什么,因為我已經指定了我在插入時以及選擇和加入時從哪個表中獲取“insert_date”。
查詢中的每一行都有兩列稱為 insert_date:一列來自您別名為“ot1”的表,一列來自您別名為“ot2”的表(碰巧是同一個表)。
數據庫系統不知道你想要哪一個,所以你必須通過寫入“ot1.insert_date”或“ot2.insert_date”來告訴它,就像你在查詢的其他地方所做的那樣:
... ot2.`insert_date` = '2022-12-20'
...
... ot1.`insert_date` = '2022-12-10'
您列出到 select 的其他列也是如此。
你需要改變這個
SELECT
`insert_date`,
`updated`,
`account_number`,
`id_number`
對此
SELECT
ot1.`insert_date`,
ot1.`updated`,
ot1.`account_number`,
ot1.`id_number`
或這個
SELECT
ot2.`insert_date`,
ot2.`updated`,
ot2.`account_number`,
ot2.`id_number`
或某種組合
問題
SQL 錯誤:字段列表中的列“insert_date”不明確錯誤意味着查詢試圖從ot1和ot2這兩個表中引用“insert_date”列。
嘗試以下操作:
SELECT
ot1.`insert_date`,
ot1.`updated`,
ot1.`account_number`,
ot1.`id_number`
此外,您的查詢中有錯字:
ON ot1.`account_number` = vdcaas2.`account_number` -> ON ot1.`account_number` = ot2.`account_number`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.