繁体   English   中英

只选择一列不同的mysql

[英]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_idname列值,对吧? 您可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM