これ何て呼びますか

mysqlのSELECT文でWHEREを使い条件を指定する時、指定する条件が数十件~数百件合った場合どうすればよいのでしょうか?

例えば、
以下のような感じで名前カラムと住所カラムがあったとします
name  address
田中  東京都
鈴木  大阪府
佐藤  北海道
加藤  沖縄県
中村  群馬県
小林  岐阜県
高橋  東京都
渡辺  大阪府
伊藤  北海道
山本  沖縄県
斎藤  群馬県
阿部  岐阜県
    ・
    ・
    ・

そこで、東京都と大阪府と北海道の人だけをSELECT文で選択したいのですが、
WHERE
`address` = '東京都' OR
`address` = '大阪府' OR
`address` = '北海道'

というように、一つづつ記述していかなければならないのでしょうか?
この例の場合だと3件だけの指定ですが、もしもっと膨大な量を指定したいとなったとき、とても効率が悪いように思います。

なにか良い方法はないのでしょうか?

ちなみにPHPからMySQLを利用しているのですが、現在

$where = array();
foreach($address as $value){
$where[] = "`address` = '${value}'";
}
$where = implode(' OR ', $where);

としておいて、

mysql_query("SELECT * FROM table WHERE ${where}");

とする方法しか思いつきません。

もっとスマートな方法があれば教えて下さい。よろしくお願いします。

A 回答 (1件)

数個程度ならINを使います



WHERE `address` IN ('東京都','大阪府','北海道')

本当に大量なら、別途条件をテーブルに保存しておき
JOINしてやればよいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!