2017-04-22 70 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循环无用 –