mysql:8915
From: <konet218@xxxxxxxxxx>
Date: Sun, 7 Mar 2004 06:23:33 +0900
Subject: [mysql 08915] Re: DISTINCT オプションの動作について
近藤です。 松枝さん、宇野さん、お返事ありがとうございます。 お二人が言うように、NO、MESSAGE、DATE全てを取得する必要があります。 # 説明不足で申し訳ありません。 ◆松枝さん > さて、ここまでは単純ですが、更に「フィールドMESSAGEも出したいよ」とな > ると、ぼくが[mysql 08909]で述べた、 > > max()やmin()等のグループ関数が使われているクエリで、その関数結果を持 > つ行の他のカラムを一緒に出すこと > > にドンピシャで該当します。その場合のオーソドックスなやり方の例は [mysql > 08909]を参考にして頂くとして、別な方法を考えます。 [mysql 08909]は、まったく気にしておりませんでした。 ざっと目を通しましたが・・・結構理解するのに時間かかりそう^^; > 複数フィールドを1カラムにまとめて出す方法を考えます。DATEとMESSAGEを > セパレータ文字“|”で連結して1カラムに出しても良いなら > ば、 > > select NO,max(concat(DATE,'|',MESSAGE)) from some-table group by NO; MESSAGE中に“|”があると不具合が出そうで私の技量では危険な匂いがプンプンなので 今回はやめておきます。・・・が、こんなオプションがあるんですね〜。 他の所で使えそうなのでマニュアル確認してみます。ありがとう御座います。 ◆宇野さん > DATEっていうカラム名って許されるんでしたっけ…? 多分、予約語ですよね・・・。安易に記述してすみません。 # ちなみに実際はまったく違いますのでm(_ _)m ◆宇野さん > ・自己ジョインを使う > SELECT a.* FROM tbl AS a LEFT JOIN tbl AS b > ON a.NO=b.NO AND a.DATE < b.DATE WHERE b.NO IS NULL; やられた〜って気分です。 こうゆう使い方もあるんですね。 勉強になります。 今回は、宇野さんに教えて頂いたSQLを参考に進めて行こうと思います。 これだったら重複数も楽に取得出来ますし、分かりやすいですから^^ 実は6テーブルぐらいJOINしてまして、ちょっと複雑なSQL文ですので、 教えて頂いた事を参考に意図した事が出来るように頑張ってみます。 ありがとうございました。
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]