[前][次][番号順一覧][スレッド一覧]

mysql:8912

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Sun, 07 Mar 2004 03:52:41 +0900
Subject: [mysql 08912] Re: DISTINCT オプションの動作について

 こんにちは。

<konet218@xxxxxxxxxx>さんの
<000c01c403a3$562c8f90$0a00a8c0@Kondou>
"[mysql 08911] DISTINCT オプションの動作について"


 フィールドDATEに対してMAX()関数を適用した単純な集計クエリでOKだと思い
ます。

    select NO,max(DATE) from some-table group by NO;




 さて、ここまでは単純ですが、更に「フィールドMESSAGEも出したいよ」とな
ると、ぼくが[mysql 08909]で述べた、

    max()やmin()等のグループ関数が使われているクエリで、その関数結果を持
    つ行の他のカラムを一緒に出すこと

にドンピシャで該当します。その場合のオーソドックスなやり方の例は [mysql
08909]を参考にして頂くとして、別な方法を考えます。

 複数フィールドを1カラムにまとめて出す方法を考えます。DATEとMESSAGEを
セパレータ文字“|”で連結して1カラムに出しても良いなら
ば、

    select NO,max(concat(DATE,'|',MESSAGE)) from some-table group by NO;

のクエリが利用可能です。クエリを発行したプログラムの方で、DATEとMESSAGE
を分離するのですね。
 この前提としては、文字列として結合されるフィールドと結合文字列とで大小
関係が揃っている事です。正規的な表現ではない数値(9と102等)や日付
(2004-2-9と2004-11-8や2004-feb-09と2004-apr-09等)等は、クエリの中で正規
的な形に直すか、元々のフィールド値で正規的な形にしておく必要があります。



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



[前][次][番号順一覧][スレッド一覧]

      8911 2004-03-07 02:49 [<konet218@xxxxxxxxxx] DISTINCT オプションの動作について       
->    8912 2004-03-07 03:52 ┣[ML account <ml@xxxxx]                                       
      8918 2004-03-07 16:51 ┃┗[KAWAJI Shinya <kawaj]                                     
      8920 2004-03-07 22:06 ┃ ┗[ML account <ml@xxxxx]                                   
      8913 2004-03-07 04:48 ┗[UNO Shintaro <uno@xx]                                       
      8914 2004-03-07 06:20  ┣[Sumito_Oda <oda@xxxx] 予約語 (Re: DISTINCT オプションの動作について)
      8915 2004-03-07 06:23  ┗[<konet218@xxxxxxxxxx]                                     
      8916 2004-03-07 13:36   ┗[ML account <ml@xxxxx]                                   
      8919 2004-03-07 18:56    ┗[UNO Shintaro <uno@xx]                                 
      8921 2004-03-07 22:06     ┗[ML account <ml@xxxxx]                               
      8923 2004-03-07 22:29      ┗[UNO Shintaro <uno@xx]