1

我有以下 SQL 查询。

SELECT p.`id`, p.`data`, p.`title`, p.`creation_date`, t.`name` AS 'tag'

    FROM `post_tag` pt, `post` p, `tag` t 

    WHERE p.`id` = pt.`post` 
        AND pt.`tag` = t.`id` 
        AND p.`author` <> '1'
        AND (t.`name` = 'Programming' 
            OR t.`name` = 'Photography' 
            OR t.`name` = '[...]') 

    ORDER BY p.`creation_date`, t.`name` DESC

我的结果表如下所示:

sql结果

正如我在屏幕截图中强调的那样,重复 ID 为 76 和 77 的行。在我的应用程序中,这是衡量“受欢迎程度”的标准。我希望能够:

  1. 将“数据”重复为一行的行分组(我知道我可以使用 GROUP BY 来做到这一点)
  2. 首先按“受欢迎程度”对行进行排序,然后按“creation_date”排序。因此,如果有 3 行具有相同的“数据”,我希望首先返回它,然后是计数为 2 的行,等等。
4

1 回答 1

1
... group by p.data order by count(*) desc, p.creation_date, t.name desc
于 2013-04-14T18:32:22.880 回答