2011-01-29 22 views
0

後、私は私が必要なもの次のSQLグループ

select site_id,count from tags where match (tag) against ('statistici' in boolean mode) ORDER BY count DESC; 

+---------+-------+ 
| site_id | count | 
+---------+-------+ 
|  9 | 1300 | 
|  13 | 1200 | 
|  9 | 1100 | 
|  13 | 1000 | 
|  9 | 900 | 
|  13 | 800 | 
|  13 | 800 | 
+---------+-------+ 

を持ってMySQLでSQL秩序を維持することは明確なSITE_IDを取得することです。私は文でグループを使用する場合 しかし数によって順位は私は何をすべき

select site_id,count from tags where match (tag) against ('statistici' in boolean mode) GROUP by site_id ORDER BY count DESC; 

+---------+-------+ 
| site_id | count | 
+---------+-------+ 
|  13 | 1000 | 
|  9 | 900 | 
+---------+-------+ 

が維持されませんか?

+0

私の解決策はselect site_id FROMです(site_idを選択し、タグtからmatch(tag)を(ブールモードの 'statistici')ORDER BY count DESC)s GROUP by s.site_id;しかし、これが最適化されていれば私は理想がありません – keepwalking

答えて

0

あなたはORDER BY count DESCで注文しており、その結果は最初に最高の数で注文されます。

ORDER BY count ACSに変更すると、最も低い数値が最初に表示されます。

EDIT:あなたのコメントに基づいて、おそらくこれは、より多くのあなたが達成しようとしているもののようである:

select site_id 
,  max(count) as TopCount 
from tags 
where match (tag) against ('statistici' in boolean mode) 
group by 
     site_id 
order by 
     TopCount DESC 

これは、サイトごとの最高数を選択し、最初の最高数を配置します。

+0

私は最高から最低まで注文する必要があります。ご覧のとおり、site_idには9と1300と表示されているので、2番目のステートメントに最初に表示されるはずです。 – keepwalking

+0

ありがとうございます。それは動作します:)これは最適化されますか? – keepwalking