-3

我的 SQL 数据库中有两张表,一张用于用户发送的照片,另一张用于照片在我的应用程序中的投票。我需要从 'photos' 表中提取 'votes' 表中得票最多的 30 张照片。

有没有办法在一个查询中做到这一点?

4

2 回答 2

1

您应该能够使用这样的查询:

select
    a.photoFileName
from
    photos a
        join votes b
            on a.photoId=b.photoId
order by 
    b.voteCount desc
limit 30

将键调整为链接字段上的确切列名。

这假设投票表有一个数字列 (voteCount),其中包含该图像的投票总数。

于 2012-09-10T14:36:58.463 回答
0

像这样的东西(如果每个投票都是单独存储的),但要进行自己的调整:

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:我没有测试查询,只是给你一个例子!

于 2012-09-10T14:39:28.930 回答