SQL:从数据库中选择最近5个唯一结果?

时间:2013-06-11 02:01:48

标签: php mysql unique

请,我想从我的数据库中返回最后5个独特结果的最佳方法。到目前为止,我使用以下代码,但显然它可以返回一些重复值的结果。

Column0是行ID,是唯一的数字键。 Column1值必须是唯一的,column2可以并且将返回一些重复值。

$result = mysql_query("SELECT *
FROM `mydb`
WHERE field = 'value' 
ORDER BY ID DESC
LIMIT 5") ;

while($row = mysql_fetch_array($result))  
 { 
 $var = $row['column1'];
 $var2 = $row['column2'];
 }

echo $var;
echo $var2;
echo "<br/>";

4 个答案:

答案 0 :(得分:0)

怎么样:

select distinct *
FROM `mydb`
WHERE field = 'value' 
ORDER BY id DESC
LIMIT 5

如果每行的id不同,并且您希望列的 rest 不同:

select <all columns but id>
FROM `mydb`
WHERE field = 'value' 
group by <all columns but id>
ORDER BY min(id) DESC
LIMIT 5

对于您希望第2列具有唯一值的情况,请使用group by

select *
FROM `mydb`
WHERE field = 'value' 
group by column2
ORDER BY id DESC
LIMIT 5

答案 1 :(得分:0)

真诚地感谢,但DISTINCT的工作方式如下。我从你的回复中解决了这个问题。

$result = mysql_query("SELECT DISTINCT column
    FROM `mydb`
    WHERE field = 'value' 
    ORDER BY ID DESC
    LIMIT 5") ;

    while($row = mysql_fetch_array($result))  
     { 
     $var = $row['column'];
     }

    echo $var;
    echo "<br/>";

答案 2 :(得分:0)

你可以做这样的事情来获得其余的列并保持你的不同。

SELECT 
   DISTINCT t.column, t.*
FROM 
  `mydb` AS t
WHERE 
  t.field = 'value' 
ORDER BY t.id DESC
LIMIT 5

答案 3 :(得分:0)

SELECT *
FROM mydb
WHERE field = 'value'
GROUP BY column1
ORDER BY ID DESC
LIMIT 5

如果有多个行具有相同的column1值,则会任意选择其中一行。如果您需要ID最高的那个,请使用:

SELECT t1.*
FROM mydb t1
JOIN (SELECT column1, max(ID) ID
      FROM mydb
      GROUP BY column1) t2
USING (column1, ID)
ORDER BY ID DESC
LIMIT 5