1

roll_noとNo_of_itemsのテーブルがあります(どちらもプライマリではありません)

次の方法でそれらを注文することは可能ですか:最初のエントリはアイテムの数が最も多く、次にそのroll_noに属するすべてのエントリが来て、次にアイテムの数が最も多いdiff roll_noからの次のエントリ、そしてすべてのそのクライアントに属するエントリなど

たとえば

Column 1 Column 2
A          12
A          05
C          19
C          18
C          02 
B          05

次のように表示する必要があります:

C 19
C 18
C 02
A 12
A 05
B 05
4

2 に答える 2

1

これを試して。

select t1.*
from yourtable t1
    inner join 
    (
        select 
            client_id, max(numberofdays) cnt 
        from yourtable 
        group by client_id
    ) t2
        on t1.client_id = t2.client_id
order by cnt desc, client_id, numberofdays desc;

SQL フレーバーによっては、これも機能する場合があります。

select *
from yourtable
order by 
    max(numberofdays) over (partition by client_id) desc, 
    client_id, 
    numberofdays desc;

編集:同じ番号の行を保持するために client_id を追加しました。

于 2012-10-17T21:00:38.583 に答える
1

SQLクエリで使用するのは「order by」です。MySqlを使用すると、コードは次のようになります

<?php
$query = mysql_query("select `client_id`, `No_of_Days` FROM `tablename` order by `No_of_Days` DESC ");
while($row = mysql_fetch_object($query))
{
     echo $row->client_id." ".$row->No_of_Days;
}
?>

クエリは、ここで主な作業を行うものです

于 2012-10-17T21:03:09.743 に答える