請考慮下面的表結構及數據:MySQL的GROUP BY爲了
+--------------------+-------------+
| venue_name | listed_by |
+--------------------+-------------+
| My Venue Name | 1 |
| Another Venue | 2 |
| My Venue Name | 5 |
+--------------------+-------------+
我目前使用MySQL的GROUP BY
功能只選擇唯一的場地名稱。但是,這隻返回第一個出現My Venue Name
,但我想根據條件返回它(在這種情況下,其中listed_by
字段的值> 2.
本質上這裏是一些僞代碼,倒要達到:?
Select all records
Group by name
if grouped, return the occurance with the higher value in listed_by
是否有一個SQL語句,將允許該功能
編輯:我應該提到,有查詢中涉及的其他領域,而listed_by
字段需要在查詢的其他地方也可以使用。以下是我們使用的原始查詢G:
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
我在第二個查詢中看不到'listed_by'。而且,你的意思是「如果分組,返回分組的結果'SUM(listed_by)'> 2」,或者你的意思是「返回每個組內的列,其中列出_by> 2'」? – 2012-07-17 05:40:07
'listed_by' ='base.user_ID'。我的意思是後一種選擇。 – BenM 2012-07-17 06:25:03