[英]select only one column distinct mysql
我有3個表 - 用戶,期刊,journaltags。 我使用選擇的標簽從3個表中選擇數據。
$sqltheme="SELECT users.id as uid, users.name, users.surname, users.avatar, journals.id, journals.author_id, journals.title, journals.text, journals.create_date, journaltags.name as jname FROM users
INNER JOIN journals ON users.id=journals.author_id
INNER JOIN journaltags ON journaltags.journal_id = journals.id WHERE journals.create_date LIKE ? AND journals.author_id=? AND (".$expression.") ORDER BY journals.id DESC LIMIT 10";
$stmtheme=$conn->prepare($sqltheme);
$stmtheme->execute($array);
但是,如果一個期刊的兩個標簽相同,則兩次選擇同一個期刊。 我怎樣才能制作DISTINCT journals.id。 我試過GROUP BY journals.id
但它沒有幫助。
如果我理解正確,你的問題是journaltags表可能有一行或多行,其中包含重復的journal_id
和name
列值,對吧? 您可以在SELECT
語句后面的select語句中添加一個distinct
子句:
SELECT DISTINCT users.id as uid, users.name, users.surname, users.avatar, journals.id, journals.author_id, journals.title, journals.text, journals.create_date, journaltags.name as jname FROM users
INNER JOIN journals ON users.id=journals.author_id
INNER JOIN journaltags ON journaltags.journal_id = journals.id WHERE journals.create_date LIKE ? AND journals.author_id=? AND (".$expression.") ORDER BY journals.id DESC LIMIT 10
您的GROUP BY journals.id
不起作用的原因是因為您還有其他列需要包含在分組中。 添加distinct
本質上是一種group by [all selected columns]
編寫group by [all selected columns]
的簡短方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.