我有一个称为注释的phpmyadmin表,其中包含字段post_id,用户名,标题,消息,位置,文件名和filename1。我想对表进行排序,其中顶部的字符串“ filename1”的编号最多,而将“ filename1”的编号最少的注释放在最底部。我应该在表中输入哪些sql代码以实现此目的?或者我应该在android应用程序中添加什么代码来实现这一点,如果需要,我可以使用android代码编辑帖子。
从post_id
的1处选择username
,title
,message
,location
,filename
,filename1
,comments
最佳答案
假设“字符串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/