簡體   English   中英

為什么我在查詢中收到錯誤:“歧義列”?

[英]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”不明確錯誤意味着查詢試圖從ot1ot2這兩個表中引用“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.

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