MySql何处和或条件,返回所有数据?

MySql何处和或条件,返回所有数据?,mysql,Mysql,我有一个小查询,在添加第二个或返回所有数据(而不是过滤后的数据)时,使用“And”“one with”“或”两次。基本上,下面应该返回John Smith状态为“活动”或“联系中”的所有案例 Select c.Adviser, l.Status From tbl_lead l Inner Join tbl_clients c On c.client_id = l.client_id Where (c.Adviser = 'John Smith' And l.Status = 'active')

我有一个小查询,在添加第二个或返回所有数据(而不是过滤后的数据)时,使用“And”“one with”“或”两次。基本上,下面应该返回John Smith状态为“活动”或“联系中”的所有案例

Select
c.Adviser,
l.Status
From
tbl_lead l Inner Join
tbl_clients c On c.client_id = l.client_id
Where
(c.Adviser = 'John Smith' And  l.Status = 'active') Or
(l.Status = 'in contact')
有人能看出我到底错在哪里吗?

使用IN子句


不知道。您必须显示示例表数据。很可能您的数据是结构化的,这样您的where子句就覆盖了所有的可能性,所以它实际上根本不进行过滤。只是一个提示:绑定比写x='Foo'和y='Bar'或z='Yeah'之类的东西更强与x='Foo'和y='Bar'或z='Yeah!'相同。括号无效。此外,在比较的周围加上括号也没有效果。所以整个子句基本上是x='Foo'和y='Bar'或z='Yeah!'。并且,正如@faheem farhan的回答中所述,当你对同一列有or时,你应该在ORD表达式周围使用in.括号。c.Adviser='John Smith'和l.Status='active'或l.Status='in contact'写的是相同的答案:
Select
c.Adviser,
l.Status
From
tbl_lead l Inner Join
tbl_clients c On c.client_id = l.client_id
Where
c.Adviser = 'John Smith' And  l.Status IN ('active','in contact')