一点用LEFT JOIN的教训
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wfyang.blog.51cto.com/65117/60588 |
从前,有这样一个sql: SELECT v.*,v2s_subject,v2s.v2s_vid, s.s_views FROM video2sites v2s LEFT JOIN videos v USING(v_id) LEFT JOIN stats s USING(v2s_id) WHERE m_id='$uid' AND v_censor IN(2,3,4) GROUP BY v.v_id 它一直工作得很正常,但有一天,它突然报错了。 报的错是说不能确定v2s_id,仔细检查一下,原来是videos表中为了查询方便也加入了一个“v2s_id”字段,using就傻了。 抛开数据库设计的因素不谈,其实这样的问题是可以避免的。方法很简单,就是用“ON”来代替“USING”。相信很多人像我一样,写程序的时候能少写一点就少写一点,这样做的后果就是往往会带来一些莫名其妙的麻烦。 改过之后的sql是这样的: SELECT v.*,v2s_subject,v2s.v2s_vid, s.s_views FROM video2sites v2s LEFT JOIN videos v ON v.v_id= v2s.v_id LEFT JOIN stats s ON s.v2s_id=v2s.v2s_id WHERE m_id='$uid' AND v_censor IN(2,3,4) GROUP BY v.v_id 这么写虽然麻烦了些,但起码可以保证在某个表中添加字段的时候不会引起冲突。 本文出自 “wfyang” 博客,请务必保留此出处http://wfyang.blog.51cto.com/65117/60588 本文出自 51CTO.COM技术博客 |



wfyang
博客统计信息
热门文章
最新评论
友情链接