mysql:15033
From: ユウシステム 糸瀬 <ユウシステム 糸瀬 <itose@xxxxxxxxxx>>
Date: Mon, 12 Oct 2009 12:57:12 +0900
Subject: [mysql 15033] Re: 「2つ以上含む」検索
久光さん 糸瀬と申します。以下でどうでしょうか。 tableAのPRIMARYをidと仮定して記述しています。 SELECT * FROM tableA WHERE id IN ( SELECT tbl.id FROM( SELECT id AS id FROM tableA WHERE columnA LIKE '%||カモ||%' union all SELECT id AS id FROM tableA WHERE columnA LIKE '%||ガチョウ||%' union all SELECT id AS id FROM tableA WHERE columnA LIKE '%||スズメ||%' ) AS tbl GROUP BY tbl.id HAVING COUNT(tbl.id) >= 2 ) -- 糸瀬真一 On Mon, 12 Oct 2009 12:41:43 +0900 bon <bon@xxxxxxxxxx> wrote: ----------------------- Original Message ----------------------- > > bonです。 > > 興味があったので調べてみました。 > > SELECT * > FROM `tableA` > WHERE (if(`columnA` LIKE '%||カモ||%',1,0) > + if(`columnA` LIKE '%||ガチョウ||%',1,0) > + if(`columnA` LIKE '%||スズメ||%',1,0)) >=2; > でどうでしょう? > > > Hisamitsu Issei <ds1i-hsmt@xxxxxxxxxx> wrote: > > > 久光と申します > > > > > > > > ||アヒル||カモ||ニワトリ||ガチョウ||スズメ|| > > > > のように「||」を区切り文字として複数の値が入って > > いるカラムがあります。例えば「カモまたはガチョウ > > またはスズメが含まれるレコード」なら > > > > SELECT * > > FROM `tableA` > > WHERE `columnA` LIKE '%||カモ||%' > > OR `columnA` LIKE '%||ガチョウ||%' > > OR `columnA` LIKE '%||スズメ||%' > > > > で抽出できますが、「カモまたはガチョウまたはスズ > > メのうちどれか2つ以上が含まれるレコード」の抽出 > > 方法がわかりません。 > > > > 「カモが含まれていれば1なければ0、ガチョウが > > 含まれていれば1なければ0、スズメが含まれていれ > > ば1なければ0」という条件を組み込んで合計値が2 > > 以上になるレコードを検索するという方法なのかなあ > > と考えたのですが具体的なSQLが思いつかなくて。 > > > > よろしくお願いいたします。 > > > > > -- > bon@xxxxxxxxxx --------------------- Original Message Ends --------------------
15031 2009-10-12 12:16 [Hisamitsu Issei <ds1] 「2つ以上含む」検索 15032 2009-10-12 12:41 ┗[bon <bon@xxxxxxxxxx>] -> 15033 2009-10-12 12:57 ┣[ユウシステム 糸瀬 <i] 15035 2009-10-12 13:14 ┃┗[Hisamitsu Issei <ds1] 15034 2009-10-12 13:09 ┗[Hisamitsu Issei <ds1]