簡體   English   中英

SQL SELECT DISTINCT不返回不同的列

[英]SQL SELECT DISTINCT doesn't return distinct columns

我正在建立一個論壇,我希望將最新主題與其所屬類別並排顯示。 但是,當某人兩次在同一類別中創建一個主題時,它將兩次顯示該類別,並且在右側顯示不同的主題。

這是正確的,但我希望它僅是一個類別。 我為此嘗試了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個類別。 該問題仍然存在於主頁和類別頁面上。

相關表格(圖):

分類目錄

主題

在這種情況下,您不需要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

您對topic_id列嘗試使用DISTINCT時 ,需要將其更改為topic_subject列

topic_id列看起來像auto_increment主鍵,因此始終為DISTINCT。

像這樣改變

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM