SQL:如何在忽略重复字段值的同时从表中选择行?

时间:2011-01-13 16:43:30

标签: sql mysql

如何在忽略重复字段值的同时从表中选择行?

以下是一个例子:

id          user_id          message

1           Adam             "Adam is here."
2           Peter            "Hi there this is Peter."
3           Peter            "I am getting sick."
4           Josh             "Oh, snap. I'm on a boat!"
5           Tom              "This show is great."
6           Laura            "Textmate rocks."

我想要实现的是从我的数据库中选择最近活跃的用户。假设我想选择5个最近活跃的用户。问题是,以下脚本选择了Peter两次。

mysql_query("SELECT * FROM messages ORDER BY id DESC LIMIT 5 ");

我想要的是当它再次回到Peter时跳过该行,并选择下一个结果,在我们的例子中是Adam。因此,我不想向访问者展示最近活跃的用户是Laura,Tom,Josh,Peter和Peter。这没有任何意义,相反,我想以这种方式向他们展示:劳拉,汤姆,约什,彼得,(跳过彼得)和亚当。

我可以使用SQL命令来解决这个问题吗?

2 个答案:

答案 0 :(得分:28)

是。 “不同的”。

 SELECT DISTINCT(user_id) FROM messages ORDER BY id DESC LIMIT 5

答案 1 :(得分:2)

也许您可以使用GROUP BY排除重复的用户。

SELECT * FROM messages GROUP BY user_id ORDER BY id DESC LIMIT 5;