mysql:8913
From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Sun, 07 Mar 2004 04:48:34 +0900
Subject: [mysql 08913] Re: DISTINCT オプションの動作について
> NO | MESSAGE | DATE >----+------------+----------- > 1 | あいうえお | 2004-02-01 > 1 | かきくけこ | 2004-02-05 > 2 | さしすせそ | 2004-02-08 > 3 | たちつてと | 2004-02-13 > 2 | なにぬねの | 2004-02-19 > 4 | はひふへほ | 2004-02-19 > >と言うデータがあった場合、「NO」が重複するレコードは1つだけ取得し、 >「DATE」を条件にSELECTしたいのですが、その時「NO」が重複する >レコードを1つだけ取得する際に「DATE」が最新の方を取得したいのです。 DATEっていうカラム名って許されるんでしたっけ…? NOとDATEを出したいだけなら、 ・集合関数を使う SELECT NO,MAX(DATE) AS DATE FROM tbl GROUP BY NO; さらにMESSAGEも出したいのなら、 ・自己ジョインを使う 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; ・集合関数とテンポラリテーブルを使う DROP TABLE IF EXISTS tt; CREATE TEMPORARY TABLE tt SELECT NO,MAX(DATE) AS DATE FROM tbl GROUP BY NO; SELECT tbl.* FROM tt INNER JOIN tbl USING (NO,DATE); という感じでしょうか。 -- UNO Shintaro, 宇野 信太郎 mailto:uno@xxxxxxxxxx http://www.venus.dti.ne.jp/~uno/
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]