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]