2012-05-05 38 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.who是**而不是** 1''也会返回users.seeking ='9''的行(同样'users.account_status '可能不是'''')。使用'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

相关问题