次のテーブル構造とデータを考慮してください。
+--------------------+-------------+
| venue_name | listed_by |
+--------------------+-------------+
| My Venue Name | 1 |
| Another Venue | 2 |
| My Venue Name | 5 |
+--------------------+-------------+
私は現在、MySQLのGROUP BY
機能を使用して、一意の会場名のみを選択しています。ただし、これはの最初の出現のみを返しますが、条件(この場合、フィールドの値が2より大きいMy Venue Name
場合)に基づいて返したいと思います。listed_by
基本的に、これが私が達成したいことのいくつかの擬似コードです:
Select all records
Group by name
if grouped, return the occurance with the higher value in listed_by
この機能を可能にするSQLステートメントはありますか?
編集:クエリに関係する他のフィールドがあり、そのlisted_by
フィールドはクエリの他の場所でも使用する必要があることを述べておく必要があります。使用している元のクエリは次のとおりです。
SELECT l1.field_value AS venue_name,
base.ID AS listing_id,
base.user_ID AS user_id,
IF(base.user_ID > 1, 'b', 'a') AS flag,
COUNT(img.ID) AS img_num
FROM ( listingsDBElements l1, listingsDB base )
LEFT JOIN listingsImages img ON (base.ID = img.listing_id AND base.user_ID = img.user_id and img.active = 'yes')
WHERE l1.field_name = 'venue_name'
AND l1.field_value LIKE '%name%'
AND base.ID = l1.listing_id
AND base.user_ID = l1.user_id
AND base.ID = l1.listing_id
AND base.user_ID = l1.user_id
AND base.active = 'yes'
GROUP BY base.Title ORDER BY flag desc,img_num desc