2010-12-16 5 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 в одной таблице, а затем соединить их с соответствующими целыми числами в другой таблице, используя их идентификаторы, поэтому одна строка может иметь несколько целых чисел.

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; 
Смежные вопросы