首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL SELECT DISTINCT不返回distinct列

SQL SELECT DISTINCT不返回distinct列
EN

Stack Overflow用户
提问于 2017-05-15 12:25:36
回答 2查看 53关注 0票数 0

我正在建立一个论坛,在那里,我希望最新的主题与它所属的类别并排显示。但是,当一个主题在同一类别中出现两次时,它会显示该类别两次,而右侧则显示不同的主题。

这在某种程度上是正确的,但我希望它只是一个类别显示。我尝试过SQL SELECT DISTINCT,但它似乎不起作用,有人能告诉我语法上是否有什么问题吗?或者问题在其他地方?

代码语言:javascript
复制
SELECT DISTINCT topics.topic_id, topics.topic_subject, topics.topic_by, categories.cat_id, categories.cat_name, categories.cat_description 
FROM topics JOIN categories ON topics.topic_cat = categories.cat_id 
ORDER BY topics.topic_date DESC LIMIT 3

此外,我想指出的是,LIMIT 3的原因是因为这是从主页,在那里只有3类应该显示。这个问题仍然存在于主页和类别页面中。

有关表格(图片):

类别

主题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-15 12:39:54

在这种情况下,您不需要DISTINCT

要只显示一个类别,需要使用GROUP BY子句对主题进行分组。

试着遵循以下sql

代码语言:javascript
复制
SELECT  topics.topic_subject, topics.topic_by, categories.cat_name, categories.cat_description, count(categories.cat_name) 
FROM topics JOIN categories ON topics.topic_cat = categories.cat_id GROUP BY  categories.cat_name
ORDER BY topics.topic_date DESC LIMIT 3
票数 1
EN

Stack Overflow用户

发布于 2017-05-15 12:28:16

您尝试使用DISTINCT for topic_id列您需要将其更改为topic_subject列

topic_id列看起来像auto_increment主键,因此它总是不同的。

像这样的变化

代码语言:javascript
复制
SELECT DISTINCT topics.topic_subject, topics.topic_id,
topics.topic_by, categories.cat_id, categories.cat_name, 
categories.cat_description 
FROM topics JOIN categories ON topics.topic_cat = categories.cat_id 
GROUP BY  categories.cat_name
ORDER BY topics.topic_date DESC LIMIT 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43979518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档