例)
a_1,a_2,a_3,a_4のいずれかが、100であるレコードをセレクトする
SELECT
*
FROM
a_table
WHERE
(
a_1 = "100"
OR a_2 = "100"
OR a_3 = "100"
OR a_4 = "100" )
INを使うような気がするのですが、左に値をもってくることもできないでしょうし、ORを使うしかないのでしょうか?
テーブルの設計が適切でないと考えます。
きちんと正規化されていれば、このような SQL 文にはならないはずです。
http://oku.edu.mie-u.ac.jp/~okumura/php/db.html
もし、テーブルの設計変更ができないのであれば、そのような SQL 文でやるしかないでしょう。
できるんですね。
ありがとうございます。
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.1.2 比較演算子
一応 IN 構文も使えるはず。
SELECT * FROM a_table WHERE "100" IN ( a_1,a_2,a_3,a_4 );
ただ、どちらにせよこのやりかたでは INDEX がうまく使えず、パフォーマンスが悪い。
MySQL は1度に1つの INDEX しか使えないので4つのクエリに分割して実行し、結果を結合する方が良いように思える。
4つを分割して実行して、結果を結合するなんて考えてもみませんでした。
ありがとうございます。
ありがとうございます。