mysql:12662
From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Mon, 23 Jan 2006 20:32:58 +0900
Subject: [mysql 12662] Re: 複数の検索結果をつなぎあわせて取得したい
> MySQL 4.0.24 > 今はnum値の合計を求める方法でスクリプトを組んでいますが、idごとに > 検索ヒット回数を求めて「ヒット回数の合計×num値」によっても同じ結果 > を取得できます。この線で組み直すと効率的な方法が見つかるかも、と思っ > たのですが頭が混乱して途中で断念しています。 テーブルスキャンを条件の数だけ繰り返すのが嫌ということなら、 SELECT id, IF(`list` like '%|リンゴ|%', num, 0) +IF(`list` like '%|イチゴ|%', num, 0) +IF(`list` like '%|みかん|%', num, 0) : : AS `SUM` FROM `prod` という感じにして、この結果から`SUM`カラムが0でない行を抽出するとか。 ここでMySQL4.1以降だったら SELECT (上記のSELECT文) AS t WHERE `SUM` <> 0 で 抽出までできます。 ところで私の勘違いかもしれませんが、ぱっと見た感じ、欲しいデータがなぜ 「ヒット回数の合計×num値」なのか疑問です。numはそのローのlistの要素数を 指しているようなので、欲しいのは「ヒット回数」ではないのかと思いました。 (上記のSQLで、IF関数の第2パラメータに指定している「num」を「1」に変えれば そういう答えになります) -- UNO Shintaro, 宇野 信太郎 ( mailto:uno@xxxxxxxxxx ) http://www.venus.dti.ne.jp/~uno/ http://d.hatena.ne.jp/uno/
12661 2006-01-23 19:30 [Hisamitsu Issei <ds1] 複数の検索結果をつなぎあわせて取得したい -> 12662 2006-01-23 20:32 ┗[UNO Shintaro <uno@xx] 12663 2006-01-24 02:06 ┗[Hisamitsu Issei <ds1] 12664 2006-01-24 07:57 ┗[UNO Shintaro <uno@xx]