[英]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.