查看以下SQL语句
select *
from PhoneData
where names = 'yohan'
and nickName = 'yoises'
and mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000
在这里,有一个问题。这就是返回电话号码相同的所有结果。有两行具有相同的电话号码,因此它通过忽略名称,昵称和所有来返回两者。我认为这是因为“或”声明。我怎么解决这个问题?我需要获取姓名= yohan和mobileNumber1或mobileNumber2 = 000000000的详细信息。
答案 0 :(得分:9)
你的OR语句需要一些括号,如下所示:
select *
from PhoneData
where names = 'yohan'
and nickName = 'yoises'
and (mobileNumber1 = 0000000000
or mobileNumber2 = 0000000000)
没有括号,它实际上是这样做的:
select *
from PhoneData
where (names = 'yohan'
and nickName = 'yoises'
and mobileNumber1 = 0000000000)
or mobileNumber2 = 0000000000
答案 1 :(得分:3)
你缺少括号:
select * from PhoneData where names = 'yohan' and nickName = 'yoises' and (mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000)
AND
运算符与OR
具有不同的优先级,因此请确保在组合它们时明确。