RIGHT JOIN (SELECT * FROM images ORDER BY image_id) AS `i` ON i.ad_id = a.id
如何在不使用临时表的情况下订购连接表? :)
因为它比简单连接慢5倍:
RIGHT JOIN images AS `i` ON i.ad_id = a.id
字段列表存在问题,应该在子查询中重复,以避免使用*符号。
谢谢;)
更新
SELECT a.id, GROUP_CONCAT(image_id) AS `image_ids`
FROM `ads` AS `a`
RIGHT JOIN (SELECT * FROM images ORDER BY image_id) AS `i` ON i.ad_id = a.id
GROUP BY `a`.`id`
ORDER BY `a`.`id` DESC
连接表中的每个id都有多个匹配的行。这就是我需要订购的原因。
group_concat(image_id)
答案 0 :(得分:2)
在加入后按image_id排序。
(你在image_id上有一个索引,不是吗?)
<强>更新强>
您可以将ORDER BY
放入GROUP_CONCAT
:
GROUP_CONCAT(image_id ORDER BY image_id)
然后你不需要子查询。
答案 1 :(得分:1)
在这个例子中不清楚为什么你需要订购子查询,所以我要说只是去除子查询的排序,只对最外层的查询应用排序。