2015-09-09 45 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

我设法使用原始查询成功执行查询,如上所述。我只能假设它是一个看不见的错字,而不会出现 –