作者rockmanalpha (KIN)
看板Database
标题[SQL ] MySQL Left JOIN单一记录问题
时间Tue Sep 4 01:04:43 2012
是这样的 假如我有以下两个table
product productimage
------------------------ -----------------------------------
id | name | stock | productid | filename | order |
1 | apple | 2 | 1 | img1.png | 2 |
2 | egg | 5 | 1 | img2.jpg | 0 |
3 | pen | 3 | 2 | pic3.gif | 4 |
2 | pic5.png | 2 |
2 | pic1.gif | 5 |
我想实现的是按product里面的记录 合拼 productimage中相对应id中order最小的
一笔记录 运行完SQL後期望得到的结果会长这样 :
product
-----------------------------------------------------------------
id | name | stock | productid | filename | order |
1 | apple | 2 | 1 | img2.jpg | 0 |
2 | egg | 5 | 2 | pic5.png | 2 |
3 | pen | 3 | NULL | NULL | NULL |
目前我使用以下SQL可以达成 :
SELECT * FROM product left join(select
productid,filename,min(`order`) from productimage Group by productid)
images on product.id = images.productid order by product.id asc
我想请问的是比起以上这个用subquery的方法 有没有更高效的解法? 感谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.246.129.62
※ 编辑: rockmanalpha 来自: 60.246.129.62 (09/04 01:08)
1F:→ tedcat:你还需要把那个最小order对应的image列出来 09/09 02:15