2010-12-16 154 views
1

我有一個表有很多整場MySQL查詢幫助

一樣的:

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

沒有找到,如果至少一個數字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) 

雖然我應該建議你的正常化您的數據庫結構。這種一對多關係通過使用鍵來鏈接表之間的關係來更好地表示。您可以將您的id值存儲在一個表中,然後使用它們的id將它們連接到另一個表中的相關整數,因此一行可以擁有多個整數。

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;