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

Max*_*xon 12 mysql sql

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

这是一个例子:

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."
Run Code Online (Sandbox Code Playgroud)

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

mysql_query("SELECT * FROM messages ORDER BY id DESC LIMIT 5 ");
Run Code Online (Sandbox Code Playgroud)

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

是否有可以用于此问题的SQL命令?

Nan*_*nne 29

是."不同".

 SELECT DISTINCT(user_id) FROM messages ORDER BY id DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)

  • 如果他也试图获取消息,这将无效.`DISTINCT`基于所有返回的列进行区分. (4认同)
  • 正确!但从提到的名字我会说他想要这些名字.您可以将其添加为完整行的子查询吗? (2认同)