0

mysql クエリで Distinct 関数を使用すると、テーブルから 1 つの列しか取得できません。これは私が使用しているクエリの例です:

SELECT DISTINCT (subcategory.title), common_cat. * FROM `subcategory`
LEFT JOIN common_cat ON ( subcategory.title = common_cat.ctitle )

以下のようにレコードを返します。

      title     mid     wid     ctitle
      Tops           17       5     Tops
      Dresses   NULL    NULL    NULL
      Pants/Shorts  18  6   Pants/Shorts
      Skirts    NULL    NULL    NULL
      Swimwear  24  8   Swimwear
      Outerwear     21  9   Outerwear

上記のデータの「タイトル」フィールドは、サブカテゴリ テーブルから取得されています。サブカテゴリ テーブルから id 列も取得したいと考えています。どうやってこれを手に入れることができますか。

4

1 に答える 1

1

DISTINCT は、テーブル行で言及した列のすべてのデータを取得し、重複する行を除外して、すべての列に同じ値を持つ一意の行を表示することで機能します。

そのため、列 subcategory.id を列リストに追加するだけで機能します。

SELECT DISTINCT subcategory.title, subcategory.id, common_cat.* FROM `subcategory`
JOIN common_cat ON ( subcategory.title = common_cat.ctitle )

個別のコマンドでは、 * を使用してすべての列を取得することはお勧めしません。クエリの列数が多いほど、データベース サーバーの負荷が大きくなり、出力が遅くなるためです。個別のリストで必要な列名のみを指定し、クエリから common_cat.* を削除することもできます。

于 2012-05-15T10:25:07.913 に答える