※ ChatGPTを利用し、要約された質問です(原文:MySQL SELECT WHERE 条件 大量)
MySQL SELECT文で大量の条件を指定する効率的な方法はありますか?
このQ&Aのポイント
MySQLのSELECT文でWHEREを使い条件を指定する時、指定する条件が数十件~数百件合った場合、効率的な方法はありますか?
たとえば、住所カラムが東京都、大阪府、北海道の人だけをSELECT文で選択したい場合、一つずつ記述する必要はありませんか?PHPからMySQLを利用している場合、スマートな方法はありますか?
WHERE句に数十件~数百件の条件を指定する場合、ループを使用してWHERE句を動的に構築する方法が効率的です。PHPの場合、配列を使用して条件をループ処理し、implode関数を使ってWHERE句を結合します。この方法で大量の条件を効率的に指定することができます。
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}");
とする方法しか思いつきません。
もっとスマートな方法があれば教えて下さい。よろしくお願いします。