我最近更換了服務器,儘管我仍然明顯使用MySQL,但我不認爲它是相同版本或以與我相同的方式設置習慣於。mysql內部連接ambigious USING()字段,但並不總是
最顯着的影響是我的JOIN查詢,實質上一些使用INNER JOIN的查詢在我的最後一個服務器上拋出ambigious列錯誤,我確信代碼會好的。
table1
t1_id int primary key
name text
map
t1_id int
t2_id int
table2
t2_id int primary key
name text
table1與table2有一對多的關係。 通常情況下,爲了從表1和表2的所有條目的行,我會做這樣的事情:
SELECT * FROM table1
INNER JOIN map USING(t1_id)
INNER JOIN table2 USING(t2_id)
WHERE table1.t1_id=1;
然而,這將引發每次ambigious列錯誤。這一輪的唯一方法就是使用
SELECT * FROM table1
INNER JOIN map ON(table1.t1_id=map.t1_id)
INNER JOIN table2 ON(map.t2_id=table2.t2_id)
WHERE table1.t1_id=1;
沒有太多我可以告訴你服務器的配置除了版本,56年5月1日 - 社區登錄,我相信這正在運行的Linux(Debian的可能)。
這是我的查詢問題還是與我們使用的MySQL版本有關?
嘗試這樣做,有用。我最初的查詢直到最近才被破解......我將它標記爲已接受,因爲雖然這並未實際解決任何問題,但我無法重現我之前看到的錯誤,因此無論是出現人爲錯誤還是某人不見了並在解決此問題時修復了服務器。無論如何,儘管我應該指出,只從兩個表中獲取數據並不是很有用 – jammypeach