如何在忽略重复字段值的同时从表中选择行?
以下是一个例子:
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命令来解决这个问题吗?
答案 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;