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

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

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值