在SQL / PHP中返回最高和第2至第5个最高日期的id

时间:2015-12-24 12:12:14

标签: php sql max

如标题中所述,我需要五个查询,返回最近日期为第1-5天的行的ID。

表:电影

id     releasedate
232143 2013-06-20
536523 2013-07-20
453554 2013-08-20
098776 2013-09-20
549302 2013-10-20

,即第一个查询将返回id 549302

我认为这适用于第一个查询:

$first = $db->query("SELECT id, FROM film WHERE MAX(releasedate)" );

PS:很抱歉这篇文章格式不佳,有谁能告诉我如何正确显示表格?

我需要在网页的不同位置显示每个ID。简单地返回一个id列表就不够了。我真正需要的是将每个id封装到一个唯一的变量中,这样我就可以在网页的不同位置调用它们。

2 个答案:

答案 0 :(得分:1)

不,你不需要五个查询。

$first = $db->query("SELECT `id` FROM `film` ORDER BY `releasedate` DESC LIMIT 5" );

这将从您桌上五部最新电影的数据库中获取ID。

要访问其中的每一个,只需运行while循环。

while($row = $first->fetch_assoc()) {
  $row['id']; # Each ID will be available like this.
}

答案 1 :(得分:0)

如果您确实需要在单独的查询中执行此操作,则可以使用LIMIT子句的双参数形式,即LIMIT offset, count。要获得最新电影,请使用

SELECT id FROM film ORDER BY releasedate DESC LIMIT 0, 1

要获得第二部最新影片,请使用

SELECT id FROM film ORDER BY releasedate DESC LIMIT 1, 1

下一个是

SELECT id FROM film ORDER BY releasedate DESC LIMIT 2, 1

等等。

但是用

将它们全部放在一个查询中应该会更好
SELECT id FROM film ORDER BY releasedate DESC LIMIT 5

然后,您可以将它们全部保存在数组中:

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $ids[] = $row['id'];
}

然后,您可以使用$ids[0]显示最近的电影,$ids[1]显示最近的第二部电影,依此类推。