SQL语句检索无效数据

时间:2012-08-09 15:35:08

标签: sql sql-server jdbc

查看以下SQL语句

select * 
from PhoneData 
where  names = 'yohan' 
    and nickName = 'yoises' 
    and mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000

在这里,有一个问题。这就是返回电话号码相同的所有结果。有两行具有相同的电话号码,因此它通过忽略名称,昵称和所有来返回两者。我认为这是因为“或”声明。我怎么解决这个问题?我需要获取姓名= yohan和mobileNumber1或mobileNumber2 = 000000000的详细信息。

2 个答案:

答案 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具有不同的优先级,因此请确保在组合它们时明确。