0

データベースから最後の 5 つの一意の結果を返す最良の方法を教えてください。これまでのところ、次のコードを使用していますが、明らかに値が重複する結果が返される可能性があります。

Column0 は行 ID であり、一意の数値キーです。列 1 の値は一意である必要があり、列 2 は重複した値を返すことができます。

$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

4 に答える 4

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

同じ値の行が複数ある場合はcolumn1、そのうちの 1 つを任意に選択します。最も高い 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
于 2013-06-11T04:15:58.380 に答える
0

どうですか:

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

idが各行で異なり、残りの列を区別したい場合:

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
于 2013-06-11T02:02:47.293 に答える