SELECT查询,LIMIT 1表示一列,但不是其余列

Gra*_*ham 5 php mysql

我可以为一个特定列限制1而不是其余列吗?我有两张桌子.一个有信息,一个有图像.对于尽可能多的图像,运行许多信息查询.因此,它将是5个图像和5个相同的标题.我怎样才能限制1个标题,限制3个图像?

$query = mysql_query("
                     SELECT `$category`.title AS title,
                     page_images.image_loc AS images
                     FROM `$category`, page_images
                     WHERE `$category`.title = page_images.title
                    ");

            while($fetch = mysql_fetch_assoc($query)) {

                $title  = $fetch['title'];              
                $images = $fetch['images'];

                echo '<b>'.$title.'</b><br />';
                echo '<a href="http://localhost/'.$images.'">
                        <img src="http://localhost/'.$images.'" height="80" width="80" />
                      </a>';

                }
Run Code Online (Sandbox Code Playgroud)

nca*_*ank 5

您可以按标题分组并使用GROUP_CONCAT收集图像位置.然后您可以将收集的位置分解为数组.并打印所有图像.

这就是我的意思

$query = mysql_query( "
SELECT
     title AS title
    ,GROUP_CONCAT( i.image_loc ) AS images
FROM
    `$category` c
    JOIN page_images i USING( title )
GROUP BY
    title
" );

while( $fetch = mysql_fetch_assoc( $query ) ) {
    $title  = $fetch[ 'title' ];              
    $images = explode( ',', $fetch[ 'images' ] );

    echo '<b>' . $title . '</b><br />';
    foreach( $images as $image ) {
        echo '<a href="http://localhost/'.$image.'">
            <img src="http://localhost/'.$image.'" height="80" width="80" />
        </a>';
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,你可以限制图像.有两种方法可以实现这一目标.首先,在PHP中你可以使用而不是foreach.第二种方式,在sql中,作为一种变通方法,你可以使用SUBSTRING_INDEX函数来限制集合,如下所示:SUBSTRING_INDEX(GROUP_CONCAT(i.image_loc),',',10)这意味着从开头到第10个逗号获取字符串. (2认同)