2012-04-20 128 views
0

我有兩個表,項目中的一個,誰舉報的項目的用戶之一。下面是一個示例:如何實行正確的排序,嵌套查詢

items:        flags: 

item_id | item_name | owner_id  item_id | flagged_by 
------------------------------  -------------------- 
1  | foo  | 1    1  | 2 
2  | bar  | 2    2  | 4 
3  | baz  | 2    2  | 7 
            2  | 7 

我想從項目表中選擇有關標誌表中按標誌數量排序的所有項目的信息。因此,對於上面的例子,我所需的輸出是

item_id | item_name | owner_id 
------------------------------ 
2  | bar  | 2 
1  | foo  | 1 

查詢我現在所擁有的是select * from items where id in (select item_id from flags group by item_id order by count(*) desc);

我知道內部查詢正常工作(返回所有的ID以正確的順序),但是當我運行整體查詢,我只是按項目ID順序獲取項目。我如何解決我的查詢?

+0

這看起來類似的問題,我最近詢問。請參閱[鏈接] http://stackoverflow.com/questions/10131150/mysql-which-value-has-maximum-count [/ link]。 hth – geoB 2012-04-20 23:43:09

回答

1

您訂購的子查詢目前唯一,不具有外部查詢的順序產生影響。如果你加入的表,而不是使用子查詢,你應該能夠命令適用於整個查詢:

select i.* 
    from items i 
    join flags f on i.item_id = f.item_id 
group by i.item_id 
order by count(f.item_id) desc 

演示:http://www.sqlfiddle.com/#!2/f141b/2

+0

工作;謝謝! – Catherine 2012-04-21 00:08:25