我有一个称为注释的phpmyadmin表,其中包含字段post_id,用户名,标题,消息,位置,文件名和filename1。我想对表进行排序,其中顶部的字符串“ filename1”的编号最多,而将“ filename1”的编号最少的注释放在最底部。我应该在表中输入哪些sql代码以实现此目的?或者我应该在android应用程序中添加什么代码来实现这一点,如果需要,我可以使用android代码编辑帖子。

post_id的1处选择usernametitlemessagelocationfilenamefilename1comments

最佳答案

假设“字符串filename1的最大数量”是指您要计算filename1列的特定值的出现次数(重复次数),而不考虑注释与哪个帖子相关联...

我们将使用单独的查询来获取“计数”,然后将该查询作为行源(作为内联视图)包含在原始查询中。

例如:

SELECT t.post_id
     , t.username
     , t.title
     , t.message
     , t.location
     , t.filename
     , t.filename1
  FROM comments t
  JOIN ( SELECT s.filename1
              , COUNT(1) AS cnt
           FROM comments s
          GROUP BY s.filename1
       ) c
    ON c.filename1 = t.filename1
 WHERE 1
 ORDER
    BY c.cnt DESC
     , c.filename1 DESC
     , t.post_id DESC


如果要计数与每个帖子关联的重复的filename1值,则将s.post_id添加到SELECT列表和内联视图的GROUP BY子句中,并在外部查询AND c.post_id = t.post_id上添加一个相等谓词。

(没有示例,尚不清楚您要返回什么结果集,因此我们只是在猜测。)

(请注意,JOIN谓词中的相等比较器将过滤出NULL值为filename1的行。如果我们还想包含NULL值,则可以用空安全相等替换相等比较器比较器:

    ON c.filename1 <=> t.filename1

关于java - 根据一条数据的最大数量对sql表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24812019/

10-10 08:27