2012-07-16 44 views
0

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

我在第二个查询中看不到'listed_by'。而且,你的意思是“如果分组,返回分组的结果'SUM(listed_by)'> 2”,或者你的意思是“返回每个组内的列,其中列出_by> 2'”? – 2012-07-17 05:40:07

+0

'listed_by' ='base.user_ID'。我的意思是后一种选择。 – BenM 2012-07-17 06:25:03

回答

4

只要你没有提到其他领域 - 在这里是最简单的解决方案:

SELECT venue_name, 
     MAX(listed_by) 
    FROM tblname 
    WHERE listed_by > 2 
GROUP BY venue_name 

与其他领域它可能看起来像(假设存在venue_name + listed_by双无重复) :

SELECT * 
     FROM tblname t1 
INNER JOIN (SELECT venue_name, 
        MAX(listed_by) max_listed_by 
       FROM tblname 
      WHERE listed_by > 2 
      GROUP BY venue_name) t2 ON t1.venue_name = t2.venue_name 
           AND t1.listed_by = t2.max_listed_by 
+0

感谢您的回答,@zerkms。我已经将我们当前使用的查询添加到问题中。我想知道你是否会建议如何修改它以实现功能? – BenM 2012-07-16 22:43:04

+0

@BenM:我在问题中看不到任何有效的查询。 PS:为什么不跟着对面 - 你把我的查询作为样本,并添加你所需要的东西? – zerkms 2012-07-16 22:43:38

+0

对不起,现在添加它(有一些造型问题)。在涉及到这样的复杂查询时,我的SQL有点欠缺,而且我对如何继续下去感到不知所措,否则我会很高兴地从您提供的示例中恢复过来。 – BenM 2012-07-16 22:46:47