MySQL,错误的WHERE逻辑

时间:2015-09-09 09:30:00

标签: mysql

我有一个名为orders的MySQL表:

[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')

如何按照描述返回预期结果?

1 个答案:

答案 0 :(得分:0)

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

这应该返回所有具有uuid =' xxx'以及“处理过的”状态值'或者'状态'

所以:

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

查询将与pkey匹配:1,2和3。