2012-05-05 5 views
3

Это мой текущий запрос:Чистый способ написать этот запрос MySQL?

SELECT * FROM users 
WHERE blah blah... 
AND users.who = '1' 

AND users.seeking = '2' 
OR users.seeking = '5' 
OR users.seeking = '8' 
OR users.seeking = '9' 
OR users.seeking = '11' 
OR users.seeking = '13' 
OR users.seeking = '14' 
OR users.seeking = '15' 

AND users.account_status = '1'; 

Как вы можете видеть поле искания может иметь несколько значений. Вместо того, чтобы писать так много OR, есть ли более красивый способ указать все допустимые значения для этого поля, чтобы вернуть мой оператор select?

+0

Как стоит ваш запрос, он будет возвращать строки, где 'users.seeking = '9'' даже если' users.who' есть ** не ** '' 1'' (аналогично' users.account_status 'не может быть' '1''). Ответы с использованием 'in' будут меняться, что (я полагаю, это хорошо, но я просто подумал, что я упоминал об этом). –

+0

Вне темы, но почему все ваши номера в кавычках? Например, почему строки? –

ответ

11
SELECT * FROM users 
WHERE blah blah... 
AND users.who = '1' 

AND users.seeking IN('2','5','8','9','11','13','14','15') 
AND users.account_status = '1'; 
+0

Отдельно, вероятно, стоит отметить, что это изменяет запрос - но почти наверняка таким образом, что исправляет ошибку. :-) –

+1

@ T.J. Кроудер да, это была ошибка, спасибо, что указали это. – TK123

Смежные вопросы