1. 程式人生 > >mysql多表關聯查詢left join 去掉結果集重複列。已解決。

mysql多表關聯查詢left join 去掉結果集重複列。已解決。

最先聽說,用別名:結果是:結果集增加了一個 別名列。沒法去重,還多加了一個列。~~~~

先是百度到這個答案:http://blog.sina.com.cn/s/blog_6ab0cbbe0102v53q.html

第一次沒看懂。太長,還有個不認識的using關鍵字。

原本已經已放棄。

===打算試試:

使用 最笨的方法:table1.欄位名1,table1.欄位名2...table2.欄位名1,table1.欄位名2...

===這個方法還是和同學討論後才有的“靈感”呢。試過了,真的可以。

所以姑且強行裝B,把 上面的答案 仔細看一遍。

又百度mysql using關鍵字的作用:很快找到這個:https://www.oschina.net/question/12_60726

核心內容:

ANSI 風格: ON

使用 JOIN ... ON 可以將表關聯的條件和記錄過濾條件分開,將上面的語句重寫後的結果如下:

SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) WHERE actor_id = 17 AND film.length > 120
看起來清晰許多。

注意: ON 語句中的括號不是必須的,我個人喜歡這樣寫而已。

ANSI 風格: USING

有一種特殊情況,當兩個要關聯表的欄位名是一樣的,我們可以使用  USING ,可減少 SQL 語句的長度:

SELECT * FROM film JOIN film_actor USING (film_id) WHERE actor_id = 17 AND film.length > 120
這個時候括號就是必須的了。這種寫法很好,輸入更少的單詞,查詢的效能也非常棒,但還需要注意一些差異。
============從【
/*
有一種特殊情況,當兩個要關聯表的欄位名是一樣的,我們可以使用  USING ,可減少 SQL 語句的長度:

SELECT * FROM film JOIN film_actor USING (film_id) WHERE actor_id = 17 AND film.length > 120
這個時候括號就是必須的了。這種寫法很好,輸入更少的單詞,查詢的效能也非常棒,但還需要注意一些差異。
*/

】這句話發現:原來 using 是專門搞這個問題的。處理:

【多表關聯,結果集 有重複欄位的問題。】(這裡是left out join查詢 結果集)inner join 也有重複列。(已測)

===有重複欄位,影響對這個結果集 進一步的查詢,報錯:Duplicate column name 'cid' ====有重複列。

===sql檔案:http://pan.baidu.com/s/1cdHibG

嘿嘿。多謝同學的激烈討論,激發我的鬥志