2010-12-16 12 views
1

私のような整数フィールドの多くMySQLのクエリのヘルプ

を持つテーブルがあります。少なくとも一つの番号2は、この分野で

であれば見つけるための簡単な方法がある

fields1 | fields2 | fields3 | fields4 .... 
0  | 1  | 0  | 2  .... 

where fields1 =2 or fields2=2 or fields3 =2 or fields4 = 2 ......... 

別の質問の長い道のりのを除いてこのフィールドに 番号2が2〜3回現れる行を選択する簡単な方法があれば、

おかげ

答えて

2
SELECT * FROM tablename WHERE 2 IN (fields1,fields2,fields3,fields4) 

私はあなたがあなたのデータベース構造を正常化することを示唆している必要がありますけど。このような1対多の関係は、テーブル間のリレーションシップをリンクするためのキーを使用することでよりよく表現されます。あなたのID値を1つのテーブルに格納し、そのIDを使って別のテーブル内の関連する整数に接続することができます。そのため、1つの行は複数の整数を所有できます。

http://databases.about.com/od/specificproducts/a/normalization.htm

1
  1. WHERE 2 IN (fields1, fileds2, ....)

  2. この質問は、データが適切に正規化されていないことを示唆しています。

0

次のクエリは、少なくとも2つのフィールドに値2.醜い、ゆっくりと、しかし、作品を持っているすべての行を検索します。

select * 
    from tab 
where 2 in(field1, field2, field3, field4) 
    and if(field1 = 2,1,0) + 
     if(field2 = 2,1,0) + 
     if(field3 = 2,1,0) + 
     if(field4 = 2,1,0) >= 2;