Mysql 使用distinct仅检索指定字段的一行

Mysql 使用distinct仅检索指定字段的一行,mysql,Mysql,这个查询的问题是它从同一个用户名中选择了多行。我只希望它为每个用户名选择一行 我想我用DISTINCE来做这个 我无法让它工作,有人能帮我吗 谢谢。是的!您可以在用户名中使用distinct SELECT SUBSTRING(m.content,1,20) as content, m.viewed, m.sent_date, u.username FROM message m INNER JOIN user u ON u.userid = m.message

这个查询的问题是它从同一个用户名中选择了多行。我只希望它为每个用户名选择一行

我想我用DISTINCE来做这个

我无法让它工作,有人能帮我吗


谢谢。

是的!您可以在用户名中使用distinct

SELECT SUBSTRING(m.content,1,20) as content, 
       m.viewed, m.sent_date, 
       u.username 
FROM message m 
INNER JOIN user u 
ON u.userid = m.message_from
WHERE m.message_to = :userid
SELECT SUBSTRING(m.content,1,20) as content, m.viewed, m.sent_date, u.username 
FROM message m INNER JOIN user u ON u.userid = m.message_from
WHERE m.message_to = :userid GROUP BY u.userid

这不是应使用的分组方式。在非MySQL DBMS.groupby上试试这个!我用过一段时间了,但记不起来了,觉得它很独特!谢谢你,巴德@波利斯普林斯>这个解决方案有什么问题?@Luke Read.Ahhh你需要用括号括起来。我没有试过。在你看来,什么是更好的方法?Group by或distinct?distinct不是仅适用于某些列的函数。它是一个查询修饰符,适用于选择列表中的所有列。跟随
SELECT Distinct( u.username ), SUBSTRING(m.content,1,20) as content, 
       m.viewed, m.sent_date           
FROM message m 
INNER JOIN user u 
ON u.userid = m.message_from
WHERE m.message_to = :userid