2012-05-05 39 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

相關問題