2017-04-22 373 views
1
[ title - date ] 
[ PHP - 10/10/10] 
[ PHP - 10/10/11] 
[ PDO - 10/10/12] 
[ ASP - 10/10/13] 
[ ASP - 10/10/16] 
[ PHP - 10/10/18] 

從該表時,我使用此查詢選擇只有一排從重複值的列

$query = "SELECT DISTINCT title, date FROM posts WHERE title = :title ORDER BY title, date"; 

Prepare 
Execute 
while($row = $stmt->fetch()) { 
    $title = $row['title']; 
    $date = $row['date']; 

    echo "<div>$title</div><div>$date</div>"; 
} 

我仍然得到所有的值,並與不只一個值標題PHP,我只想挑選具有最高日期的值

我希望它是

<div>ASP</div><div>10/10/16</div> 
<div>PDO</div><div>10/10/12</div> 
<div>PHP</div><div>10/10/18</div> 

回答

2

看起來像一個簡單的彙總:

SELECT title, MAX(date) 
FROM posts 
GROUP BY title 
ORDER BY title 
+0

GROUP BY做了什麼? W3School的解釋並沒有讓我理解一個詞 –

+1

'GROUP BY'與'DISTINCT'類似,從多行返回共享相同值的單行,但是另外允許應用像'MIN/MAX/SUM/AVG/COUNT '。在你的情況下,它返回每個標題的最大日期。 – dnoeth

0

如果你只想要一個排,使用limit 1

SELECT title, date 
FROM posts 
WHERE title = :title 
ORDER BY date DESC 
LIMIT 1; 
+0

那麼什麼是截然不同的使用呢? –

+0

如果您還有其他問題,請將其作爲問題提出。如果您需要了解SQL的語法,請參閱文檔。 –

+0

仍然沒有按預期工作,我希望PHP標題只被調用一次,最高的日期。然後直接調用PDO,限制一個會使while循環無用 –