MySQL& PHP - 选择6行,每行包含不同的'WHERE'子句

时间:2011-06-18 22:23:57

标签: php mysql sql greatest-n-per-group

我对MySQL非常好,但这是我从未做过的事情。我想要做的是创建一个SQL代码来选择6行,每行都有自己的WHERE子句。

我要做的是获得6行,每一行都是最新发布的“视频”。有6个类别,所以这就是我有6行的原因。我希望它通过'id'数字拉出最新的数字。

我会用6种不同的SQL查询来做,但我认为会慢一点(除非这是唯一的方法吗?)

Layout

从那个小片段,我想最终得到的是:

2 - > 21

6 - > 16

8 - > 14(挑选14,因为它是最大的。)


最终工作代码

$sql="SELECT video_category, MAX(video_id) AS video_id FROM videos GROUP BY video_category";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)) {
echo $rows['video_category'] . " --> " . $rows['video_id'] . "<br>";
}

4 个答案:

答案 0 :(得分:3)

类似

select distinct category, video_id from table_name order by id DESC

如果您在数据库中有6个类别,那么您将获得6行,这些行在其类别中具有最高的ID

答案 1 :(得分:2)

请分享您的表格结构。不过,我认为以下查询应该可以解决问题:

SELECT category_id, MAX(movie_id) most_recent_movie_for_category FROM movies GROUP BY category_id

答案 2 :(得分:1)

您有两种选择:

  1. 确定将导致所需内容的常见WHERE子句。
  2. (可能是首选的)进行一些涉及UNION(SELECT ... FROM ... WHERE ... UNION SELECT ... FROM ... WHERE ...等)
  3. 的查询

    如果您有任何疑问,请与我们联系。我相信没有你的数据库结构,你很难帮助你。

答案 3 :(得分:1)

感谢您发布表格结构。这只是一个简单的GROUP BY,在video_id上有一个MAX聚合。

SELECT video_category, MAX(video_id) AS video_id FROM videos GROUP BY video_category;