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

嘿嘿。多谢同学的激烈讨论,激发我的斗志

博主设置当前文章不允许评论。

没有更多推荐了,返回首页