mysql:8122
From: "TOYOSHIMA,Masayuki" <"TOYOSHIMA,Masayuki" <mtoyo@xxxxxxxxxx>>
Date: Sat, 09 Aug 2003 21:39:39 +0900
Subject: [mysql 08122] 特定フィールドの異なりによる抽出
豊島(東京外国語大学アジア・アフリカ言語文化研究所)と申します。 或るフィールドの異なりごとにレコードを一つずつ取り出すという 操作をしたいと思います。 具体的には、次の様なテーブル SAMPLE があるとします。 (ID は unique key) ID | SOURCE | CONTENT | NOTE ----+--------+---------+------ 1 | A | x | abc 2 | A | x | def 3 | A | y | hij 4 | B | y | klm 5 | B | y | opq 6 | C | x | rst 7 | C | y | vwx このとき、SOURCE ごとに一つずつ取り出した次のような結果を得たいのです。 a) CONTENT='x' について検索したら ID | SOURCE | CONTENT | NOTE ----+--------+---------+------ 1 |A |x |abc 6 |C |x |rst b) CONTENT='y' について検索したら ID | SOURCE | CONTENT | NOTE ----+--------+---------+------ 3 |A |y |hij 4 |B |y |klm 7 |C |y |vwx 次のように3回 query すれば、期待の結果は一応得られます。 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); しかし、これはあまりに非能率のような気がします。 もっとエレガントな方法はないものでしょうか。 豊島正之(とよしま まさゆき) mtoyo@xxxxxxxxxx http://jcs.aa.tufs.ac.jp/mtoyo/ 東京外国語大学アジア・アフリカ言語文化研究所 〒183-8534 東京都府中市朝日町3-11-1 代表Fax 042-330-5610
-> 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"]