使用group by时显示与group by match相关的所有行数据

时间:2013-02-03 07:49:10

标签: mysql group-by

我想选择所有照片,避免画廊名称重复。但是使用group by,我会检索所有图库名称,但我只获得一张与每个gallery.becoz组相关的照片,只显示一行。

如何在不重复图库名称的情况下显示所有照片?是否有替代方法?.Plz帮助。

$sql=mysqli_query($db3->connection,"SELECT  *   from photo  group by   gallery_name ");
    while($row=mysqli_fetch_array($sql)){
        $pic_name=$row['p_name'];

        $gallery_name=$row['gallery_name'];
        echo "$gallery_name>$pic_name,";
    }

第二种替代方法可以像这里一样,但我仍然得到画廊名称的复制

 $sql=mysqli_query($db3->connection,"SELECT gallery_name   from photo  group by   gallery_name ");
        while($row1=mysqli_fetch_array($sql1)){
            $gallery_name=$row1['gallery_name'];

        $sql=mysqli_query($db3->connection,"SELECT  *   from photo where gallery_name='$gallery_name' ");
        while($row=mysqli_fetch_array($sql)){
            $pic_name=$row['p_name'];

            $gallery_name1=$row['gallery_name'];
            echo "$gallery_name>$pic_name,";
        }}

4 个答案:

答案 0 :(得分:1)

使用'ORDER BY'代替"GROUP BY"

SELECT *
 ...
GROUP BY ...

错了。组用于计数,查找最小值和最大值以及其他组操作。 其余的应该取决于你的PHP代码。

答案 1 :(得分:0)

试试这个::

SELECT  gallery_name, p_name   from photo group by gallery_name, p_name

答案 2 :(得分:0)

我认为您可能希望使用DISTINCTORDER BY关键字:

SELECT DISTINCT p_name, gallery_name
FROM Photo
ORDER BY gallery_name, p_name
祝你好运。

答案 3 :(得分:0)

如果您要查找特定图库的所有图片,请使用不带分组的WHERE子句,如下所示:

  SELECT  *   
  from photo  
  where gallery_name  = '$gallery_name';