文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>可遇不可求的Question之MYSQL4.1版本之前不支持子查询的解决方案篇

可遇不可求的Question之MYSQL4.1版本之前不支持子查询的解决方案篇

时间:2011-02-21  来源:林石

解决:可以通过使用left join  inner jion  right jion 左右内联连接来达到子查询对应的效果.在其他数据库中相应SQL语法也可以适用.考虑到数据库移植的问题,这种方案比较具有通用性.

示例:

采用子查询语句:

1 select a.level level,a.id id from cq_user a,
2 (select distinct id_target as id from e_money 
3        where time_stamp between 1101310000 and 1102000000 and type in (6,8)) b
4        where a.id=b.id 

采用拆分SQL语句:

 

1 select distinct id_target as id from e_money where time_stamp between 1101310000 and 1102000000 and type in (6,8);
2 --从第一句获取id后,遍历获得id列表 1,2,3,4,5,6,7,8...
3 select level,id from cq_user where id in (1,2,3,4,5,6,7,8...);

 

 

采用左连接语句:

1 select distinct a.level,a.id from cq_user a 
2        left join e_money b 
3             on a.id = b.id_target where b.type in (6,8) and b.time_stamp between 1101310000 and 1102000000
4                order by a.level

 这三个语句的执行结果相同.可以对比以上三种方式,拆分SQL,必须通过编程辅助来得到下一个SQL的条件,增加了程序复杂度.而采用左连接的语句,则无需附加编程就可以达到相同效果.

 总结:

提供解决方案:

1.通过拆分SQL为简单语句实现,但是需要通过辅助编程,支出额外的编程量.

2.通过使用left join  inner jion  right jion 左右内联连接来达到子查询对应的效果,无需附加编程.

 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载