簡體   English   中英

錯誤代碼:1052。字段列表中的“TradeDate”列不明確

[英]Error Code: 1052. Column 'TradeDate' in field list is ambiguous

我收到這樣的錯誤代碼

錯誤代碼:1052。字段列表中的“TradeDate”列不明確

當我嘗試加入兩張桌子時。 兩個 csv 文件列如下所示: data_price_temp消費

因此,我將所有表中的 Date 列命名為 TradeDate。 然后,我嘗試使用我創建的兩個表中的 TradeDate 來執行連接

我的語法看起來像這樣

CREATE DATABASE price_temp;

USE price_temp;

CREATE TABLE pricetemp(TradeDate CHAR(10),
                       Price double,
                       Temp double); 
SELECT* FROM pricetemp

CREATE TABLE consumption(TradeDate CHAR(10),
                        Consumption double);
                        
 SELECT* FROM consumption  
 
CREATE TABLE production(TradeDate CHAR(10),
                       Production double);
                       
SELECT * FROM production

SELECT TradeDate, Price, Temp, Consumption
FROM pricetemp, consumption
WHERE pricetemp.TradeDate = consumption.TradeDate`

您的最后一個查詢應使用顯式聯接語法,並且應始終使用 table.field 表示法以避免您所指的錯誤

SELECT pricetemp.TradeDate, Price, Temp, Consumption
FROM pricetemp JOIN consumption ON 
pricetemp.TradeDate = consumption.TradeDate

或者

SELECT consumption.TradeDate, Price, Temp, Consumption
FROM pricetemp JOIN consumption ON 
pricetemp.TradeDate = consumption.TradeDate

要加入另一個表,只需:

SELECT consumption.TradeDate, Price, Temp, Consumption, anotherTable.production
FROM pricetemp 
    JOIN consumption ON pricetemp.TradeDate = consumption.TradeDate
    JOIN anotherTable ON pricetemp.TradeDate = anotherTable.TradeDate

修復

SELECT pricetemp.TradeDate, Price, Temp, Consumption
FROM pricetemp, consumption
WHERE pricetemp.TradeDate = consumption.TradeDate`

解釋

該錯誤告訴您有多個具有相同名稱的字段。 當您遇到這種情況時,您需要通過在表名前面加上表名來明確要使用哪個字段,例如tablename.fieldname 一旦你理解了這一點,你就可以毫無問題地加入更多的表格。 在我們的特定情況下pricetemp.TradeDateconsumption.TradeDate具有相同的值,但 RDBMS 不知道這一點,並要求您指定您打算使用哪一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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