mysql:8129
From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Sun, 10 Aug 2003 09:24:51 +0900
Subject: [mysql 08129] Re: 特定フィールドの異なりによる抽出
川合孝典です。 重箱の隅つつきになってしまいますが ----- Original Message ----- From: "Kawaji, Shinya" <kawaji@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Saturday, August 09, 2003 11:37 PM Subject: [mysql 08125] Re: 特定フィールドの異なりによる抽出 > かわじ、です。 > select > 0 + left( min(concat(lpad(ID, 10, '0'), ID) ), 10) as ID, > SOURCE, > CONTENT, > substring( min(concat(lpad(ID, 10, '0'), NOTE)), 11) as NOTE > from > SAMPLE > where > CONTENT = 'x' > group by > SOURCE > ; これなのですが、NOTEを頭にIDを10桁にしたものをつけて minで取り出し、最後に11桁目に削るということですよね。 その点ではIDのほうは特に形を変える必要はないのでは? ex. select min(ID) AS ID, SOURCE, CONTENT, substring(min(concat(lpad(ID, 10, '0'), NOTE)), 10+1) as NOTE from SAMPLE where CONTENT = 'x' group by SOURCE; また豊島さんの書かれていた元の文ですが > 1) create temp table T1 as select ID,SOURCE from SAMPLE where (CONTENT = 'x'); > 2) create temp table T2 as select min(ID) from T1 group by SOURCE; > 3) select ID,SOURCE,CONTENT,NOTE from T2,SAMPLE where (min = ID); CREATE temporary TABLE T1 AS SELECT MIN(ID) AS MIN FROM SAMPLE WHERE CONTENT='x' GROUP BY SOURCE; SELECT ID,SOURCE,CONTENT,NOTE FROM T1,SAMPLE where (min = ID); とtemprary TABLEをT1の1つにしてみると言うのはダメですか? また対象とするcontentを変えて何回か実行するのであればCONTENTも 含めたtemporaryを作ったほうが簡単かも知れません。 ついでにテーブルを結合する条件とレコードを選択する条件を 分けたほうがエレガントかも(^^): CREATE temporary TABLE T1 AS SELECT CONTENT as min_cont, MIN(ID) AS MIN FROM SAMPLE GROUP BY SOURCE, CONTENT; SELECT ID,SOURCE,CONTENT,NOTE FROM T1,SAMPLE where (T1.min_cont='x') and (T1.min = ID); SELECT ID,SOURCE,CONTENT,NOTE FROM T1,SAMPLE where (T1.min_cont='y') and (T1.min = ID); SELECT ID,SOURCE,CONTENT,NOTE FROM T1 INNER JOIN SAMPLE on (T1.min= ID) WHERE T1.min_cont='x'; =================================================== 川合 孝典 (Hippo2000) DBI日本語メーリングリスト管理人、Kansai.pm所属 kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx http://member.nifty.ne.jp/hippo2000、http://www.hippo2000.info/ perldocの日本語情報ならperldocjp:翻訳してみませんか? http://perldocjp.sourceforge.jp/ ===================================================
8122 2003-08-09 21:39 ["TOYOSHIMA,Masayuki"] 特定フィールドの異なりによる抽出 8123 2003-08-09 22:33 ┣[yamada <tirutiru@xxx] 8124 2003-08-09 22:53 ┃┗[yamada <tirutiru@xxx] 8125 2003-08-09 23:37 ┗["Kawaji, Shinya" <ka] 8126 2003-08-10 07:21 ┣["TOYOSHIMA,Masayuki"] 8127 2003-08-10 08:17 ┃┗["Kawaji, Shinya" <ka] 8128 2003-08-10 08:59 ┃ ┗["TOYOSHIMA,Masayuki"] -> 8129 2003-08-10 09:24 ┗["KAWAI,Takanori" <GC] 8130 2003-08-10 13:07 ┗["TOYOSHIMA,Masayuki"]