我正在建立一个论坛,在那里,我希望最新的主题与它所属的类别并排显示。但是,当一个主题在同一类别中出现两次时,它会显示该类别两次,而右侧则显示不同的主题。
这在某种程度上是正确的,但我希望它只是一个类别显示。我尝试过SQL SELECT DISTINCT,但它似乎不起作用,有人能告诉我语法上是否有什么问题吗?或者问题在其他地方?
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类应该显示。这个问题仍然存在于主页和类别页面中。
有关表格(图片):
发布于 2017-05-15 12:39:54
在这种情况下,您不需要DISTINCT。
要只显示一个类别,需要使用GROUP BY子句对主题进行分组。
试着遵循以下sql
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发布于 2017-05-15 12:28:16
您尝试使用DISTINCT for topic_id列您需要将其更改为topic_subject列
topic_id列看起来像auto_increment主键,因此它总是不同的。
像这样的变化
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 3https://stackoverflow.com/questions/43979518
复制相似问题