2010-12-16 11 views
1

Ich habe eine Tabelle mit einer Menge von Integer-Feldernmysql query Hilfe

wie:

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

gibt es einen einfachen Weg zu finden, wenn mindestens eine Nummer 2 ist in diesem

Feldern mit Ausnahme von dem langen Weg von

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

einer anderen Frage Wenn es eine einfache Möglichkeit gibt, die Zeilen zu wählen, die sind, erscheinen Zahlen 2 zwischen 2 bis 3 mal in diesen Feldern.

dank

Antwort

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

Obwohl sollte ich, dass Ihre normalisieren Ihre Datenbank-Struktur vor. Diese Art von Eins-zu-Viele-Beziehung wird besser dargestellt, indem man einen Schlüssel verwendet, um Beziehungen zwischen Tabellen zu verknüpfen. Sie können Ihre ID-Werte in einer Tabelle speichern und dann mit den entsprechenden Ganzzahlen in einer anderen Tabelle unter Verwendung ihrer IDs verbinden, sodass eine Zeile mehrere Ganzzahlen enthalten kann.

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

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

  2. Diese Frage lässt vermuten, dass Ihre Daten nicht korrekt normiert ist.

0

Die folgende Abfrage findet alle Zeilen, in denen mindestens zwei Felder den Wert 2. Hässlich, langsam, aber funktioniert.

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;