您的位置:首页技术文章
文章详情页

mysql - 查询数据库某个字段不重复的值,按时间排序,如何写呢?

【字号: 日期:2022-06-11 11:22:35浏览:19作者:猪猪

问题描述

文章模型如下

class Article(models.Model):

title = models.CharField(max_length=150, verbose_name=’文章标题’, unique=True)content = models.TextField(verbose_name=’文章内容’)describe = models.CharField(max_length=500, verbose_name=’文章描述’, blank=True, null=True)date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')click_count = models.PositiveIntegerField(verbose_name=’点击次数’, blank=True, null=True, default=0)keywords = models.ForeignKey(Keywords, blank=True, null=True, verbose_name=’关键词’) class Meta: verbose_name = ’文章’ verbose_name_plural = verbose_name ordering = [’-date_publish’]def __str__(self): return self.title

查询:若外键字段“keywords”下有多条数据,只取1条,多条数据按click_count取点击数最大的,再得到标题/内容/描述的值,输出到网页模板上。

想用一个查询语法完成,请问如何写呢

问题解答

回答1:

关键字mysql分析函数(开窗函数),由于mysql不支持max over只能写成如下:

SELECT tt.*FROM table tt INNER JOIN (SELECTkeyword,max(click_count) maxcount FROM table GROUP BY keyword) groupedtt ON tt.keyword = groupedtt.keyword AND tt.click_count = groupedtt.maxcountORDER BY tt.create_time

相关文章: