如何使用mysql order by从更相似的值中仅选择一个值

时间:2011-10-11 08:23:50

标签: php mysql database

我有一个SQL查询,用于检索挂帖列表

$qry=mysql_query("SELECT senderid,post,date FROM ".post_table." WHERE id='".$mydata->id."' ORDER BY time DESC LIMIT 0, 20");

这很好用。但我现在有一个问题:

如果用户同时发布20个帖子,则第一个列表将仅显示其帖子。但我想在第一个列表中显示一个用户的1个帖子。所以我试图使用以下声明:

$qry=mysql_query("SELECT senderid,post,date FROM ".post_table." WHERE id='".$mydata->id."' ORDER BY time DESC, DISTINCT(senderid) LIMIT 0, 20");

根本不起作用。 请帮帮我怎样才能做到?

2 个答案:

答案 0 :(得分:1)

你以错误的方式使用distinct

SELECT DISTINCT senderid,post,date FROM {post_table} WHERE id='{id}' ORDER BY time DESC LIMIT 0, 20;

答案 1 :(得分:0)

在select子句中使用distinct而不是where。尝试

$qry=mysql_query("SELECT DISTINCT senderid,post,date FROM ".post_table." WHERE id='".$mydata->id."' ORDER BY time DESC LIMIT 0, 20");