请考虑下面的表结构及数据: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