在查询中限制MySQL结果

前端之家收集整理的这篇文章主要介绍了在查询中限制MySQL结果 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在寻找是否可以通过一个查询获得所需的结果,而我的MySQL技能仍处于青春期.

我有4张桌子:表演,艺术家,场地和游览.现在,我的主查询的简化版本如下所示:

SELECT * 
     FROM artists AS a,venues AS v,shows AS s 
LEFT JOIN tours AS t ON s.show_tour_id = t.tour_id
    WHERE s.show_artist_id = a.artist_id
      AND s.show_venue_id = v.venue_id
ORDER BY a.artist_name ASC,s.show_date ASC;

我要添加的是每个艺术家返回的演出数量的限制.我知道我可以选择* FROM artist,然后为每个返回的行运行一个带有简单LIMIT子句的查询,但是我认为必须有一种更有效的方法.

更新:为简单起见,我想为每位艺术家选择最多5个节目.我知道我可以做到这一点(消除所有麻烦):

<?PHP
    $artists = $db->query("SELECT * FROM artists");
    foreach($artists as $artist) {
        $db->query("SELECT * FROM shows WHERE show_artist_id = $artist->artist_id LIMIT 5");
    }
?>

但是将另一个查询放在foreach循环中似乎是错误的.我正在寻找一种在一个结果集中实现这一目标的方法.

最佳答案
这是存储过程的目的.

选择一个艺术家列表,然后循环浏览该列表,将每个艺术家的5个或更少的节目添加到临时表.

然后,返回临时表.

原文链接:https://www.f2er.com/mysql/531998.html

猜你在找的MySQL相关文章