2015-09-09 46 views
0

我有一個MySQL表稱爲訂單:MySQL的,不正確的WHERE邏輯

[database.orders] 
uuid | status | data | date 

我一直依賴於SQL查詢返回的記錄但事實證明WHERE子句是錯誤的。

我想要的是uuid等於'xxx'且狀態等於'PROCESSED'或'PAUSED'的記錄。

以前我用:WHERE status='PROCESSED' OR status='PAUSED' AND uuid = 'xxx'
我現在看到這個返回在其中的地位進行處理,或狀態暫停& UUID記錄=「XXX」


我試過以下,但沒有成功:

WHERE (uuid = 'xxx' AND status = 'PROCESSED') OR (uuid = 'xxx' AND status = 'PAUSED')

WHERE uuid = 'xxx' AND (status = 'PROCESSED' OR status = 'PAUSED')

作爲完整查詢,該陳述將顯示爲SELECT * FROM orders WHERE uuid = 'xxx' AND (status = 'PROCESSED' OR status = 'PAUSED')

如何返回所述的預期結果?

+4

AND WHERE uuid ='xxx'AND(status ='PROCESSED'或status ='PAUSED')'條件按照要求是正確的,但是沒有給出預期的結果需要檢查一些測試數據,如果可能的話在http ://www.sqlfiddle.com –

+1

最後,我認爲,必須奏效。你可以寫成WHERE uuid ='xxx'AND狀態('PROCESSED','PAUSED')' – splash58

+0

你能發佈完整的查詢嗎?問題可能在其他地方。 –

回答

0
SELECT * FROM orders WHERE (status = 'PROCESSED' OR status = 'PAUSED') AND uuid = 'xxx'; 

這應返回您有UUID = 'XXX' 和 '加工' 的狀態值OR '狀態'

因此,所有行:

PKEY | UUID | Status 
1  xxx PROCESSED 
2  xxx PAUSED 
3  xxx PROCESSED 
4  xyz PROCESSED 
5  xyz PAUSED 

查詢將與pkey的:1,2和3匹配。

最好的問候。

+0

它在問題中說明了這個地方按順序顛倒)子句無效 –

+0

我設法使用原始查詢成功執行查詢,如上所述。我只能假設它是一個看不見的錯字,而不會出現 –