我的 SQL 数据库中有两张表,一张用于用户发送的照片,另一张用于照片在我的应用程序中的投票。我需要从 'photos' 表中提取 'votes' 表中得票最多的 30 张照片。
有没有办法在一个查询中做到这一点?
您应该能够使用这样的查询:
select
a.photoFileName
from
photos a
join votes b
on a.photoId=b.photoId
order by
b.voteCount desc
limit 30
将键调整为链接字段上的确切列名。
这假设投票表有一个数字列 (voteCount),其中包含该图像的投票总数。
像这样的东西(如果每个投票都是单独存储的),但要进行自己的调整:
SELECT
p.id,
COUNT( v.id )
FROM
photos p
JOIN
votes v ON p.id = v.photo_id
ORDER BY
COUNT( v.id ) DESC
GROUP BY
v.photo_id
LIMIT 30;
PS:我没有测试查询,只是给你一个例子!