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]