在我的项目中,我使用了group by子句的select查询,当我执行它而不是显示9条记录时,它显示了8条记录!一条记录没有显示。 这是我的代码
Reverse for 'category' with arguments '()' and keyword arguments '{'category_name_slug': ''}' not found. 1 pattern(s) tried: ['rango/category/(?P<category_name_slug>[\\w\\-]+)/$']
第一张图片是主要数据,第二张图片是结果。如您所见,记录未显示
答案 0 :(得分:0)
我看到你发布了数据
正如我之前所说,分组只会返回唯一的行
你只有8个独特的
年(RegisterDate),成交量,发行量,类别II
我想你想要一个简单的选择
select year(RegisterDate), CategoryId, Volume, Issue
from Articles
where CategoryId = 14
您在组中有一个聚合 你确定要这么做吗? 试试
select year(RegisterDate), CategoryId, max(Volume), max(Issue)
from Articles
where CategoryId = 14
Group by year(RegisterDate), CategoryId
您将获得唯一年份(RegisterDate),CategoryId仅限该组
答案 1 :(得分:0)
在示例数据中请注意,具有ID 12和13的行共享完全相同的聚合条件(year(RegisterDate),Volume,Issue,CategoryId
)。因此,这两行将按照您在查询中的请求分组到一个组中。所有其他人都有不同的价值组合,并组成自己的团体。
答案 2 :(得分:0)
您在“问题”列中有两次“问题3”,对应于“第一卷”,这就是您在进行分组时错过一行的原因。如果你想在你的查询中使用'GROUP BY'语句,那么结果你的8行是正确的,但如果你想要返回9行,你不应该在查询中使用'GROUP BY'语句。我建议使用这样的东西:
SELECT Year(RegisterDate) 'Year', Volume, Issue
FROM Articles
WHERE CategoryId = 14
AND Title >= 'Article1' AND Title <= 'Article9'
答案 3 :(得分:-1)
谢谢我通过在查询中添加另一列来解决它
select year(RegisterDate),Volume,Issue,CategoryId,Title from Articles where CategoryId=14 Group by year(RegisterDate),Volume,Issue,CategoryId,Title