这也是这几天突发奇想写的一个专题,正好自己的数据库方面比较欠缺,希望通过这个系列能多学点数据库知识,当然,这些场景都是工作中遇到或者某次突然的灵感想到。该系列有以下几个特点:
更新不定期,通常有灵感了会记在印象笔记上,然后研究整理成文;
研究的数据库为MySQL;
侧重场景和SQL语句的书写优化。
场景描述:
假设现在有两个数据表,表1为产品表product,表2为产品图片表product_pic。两表通过product_id相连,关系为一对多的,即每个产品可能有多张图片,当然,也可能没有图片。
那么问题来了:
现在要查询product产品,并且要按照有无图片来排序,即有图片的放后面,没有图片的放前面,怎么做比较好?
建两个测试表:
product表
product_pic表
方案1:子查询
虽然不推荐子查询,但这毕竟是一种解决问题的有效方法。
select p.product_id,p.name from product as p order by (select count(pp.product_id) from product_pic as pp wher