mysql多表關聯查詢left join 去掉結果集重複列。已解決。
阿新 • • 發佈:2019-02-17
最先聽說,用別名:結果是:結果集增加了一個 別名列。沒法去重,還多加了一個列。~~~~
先是百度到這個答案: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
嘿嘿。多謝同學的激烈討論,激發我的鬥志