在一个查询中按不同表中的结果对结果进行排序


Order results by results from a different table in one query

是否可以在一个查询中有这样的东西,

计算某个 ID 在image_likes中有多少个赞,然后按images的点赞数降序排列结果。

SELECT
    *
FROM
    `images`
ORDER BY
    (SELECT COUNT(`id`) FROM `image_likes` WHERE `image_id`=images.`id`) ASC

(我当然已经编造了字段名称,但这种格式应该有效)

如果可能,您可能希望更改系统的工作方式,以便仅从字段名称中读取总喜欢数,而不是执行子选择。

未经测试

select imageid, count(imageid) from image_likes 
Group by imageid
Order by Count(imageid) desc
select * from (SELECT *,(SELECT COUNT(*) as count from image_likes il WHERE ID = i.ID)         
FROM images) tbl ORDER BY COUNT

未经测试