2012-07-16 43 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