2

photos写真のファイル名とその他の関連情報を含む MySQL データベースで呼び出されるテーブルがあります。構造は次のとおりです。

+----------+------------+-------------+
| photo_id | gallery_id | photo_fname |
|----------|------------|-------------|
|     1    |      1     |  DSC2001    |
|     2    |      1     |  DSC2002    |
|     3    |      1     |  DSC2003    |
|     4    |      2     |  DSC2004    |
|     5    |      2     |  DSC2005    |
|     6    |      2     |  DSC2006    |
|     7    |      3     |  DSC2007    |
|     8    |      3     |  DSC2008    |
|     9    |      3     |  DSC2009    |
+----------+------------+-------------+

私がやりたいことは、次のように、各ギャラリーの最初の写真ファイル名を返すクエリを作成することです。

+----------+------------+-------------+
| photo_id | gallery_id | photo_fname |
|----------|------------|-------------|
|     1    |      1     |  DSC2001    |
|     4    |      2     |  DSC2004    |
|     7    |      3     |  DSC2007    |
+----------+------------+-------------+

昨夜の頭痛が私を克服するまでこれを調査しました.同様の質問を見つけましたが、まったく同じことをしようとしているようには見えませんでした. サブクエリを試してみました。ここの他の投稿のサンプル コードを試しましたが、うまくいきませんでした。頭がぼんやりしている、または適切な解決策が見つからないためです。

上記のように結果を返したいだけで、それ以上は何もありません。

よろしくお願いします!

更新: 申し訳ありませんが、テーブル名は写真、FWIW です。

第二に、私が本当に欲しいのはファイル名であり、写真やギャラリーの ID ではありません。視覚的にわかりやすくするためにそれらを含めただけです。混乱を招いた場合はお詫び申し上げます。

4

4 に答える 4

6

これを試して:

SELECT *
FROM YourTable
WHERE photo_id IN ( SELECT MIN(photo_id) 
                    FROM YourTable
                    GROUP BY gallery_id)

デモを見る

更新された質問について:

SELECT photo_fname
FROM photos
WHERE photo_id IN ( SELECT MIN(photo_id) 
                    FROM photos
                    GROUP BY gallery_id)
于 2013-02-07T18:30:23.877 に答える
0

内部結合を使用した簡単な方法は次のとおりです

SELECT
  m.*
FROM sparkles as m
  INNER JOIN (SELECT
        photo_id,
        MIN(photo_id)
          FROM sparkles
          GROUP BY gallery_id) as l
    on l.photo_id = m.photo_id

デモ

于 2013-02-07T18:35:05.040 に答える
-2
Select * from tablename group by gallery_id;       ?
于 2013-02-07T19:44:42.867 に答える
-2
SELECT photo_id, gallery_id, photo_frame
FROM ...
GROUP BY photo_id, gallery_id

デフォルトでは、mysql は、フィールド リスト内の集約されていないフィールドについて、DB で検出した最初のグループ化されていない値を返します。

于 2013-02-07T18:30:48.330 に答える