SQL语句检索无效数据

SQL语句检索无效数据,sql,sql-server,jdbc,Sql,Sql Server,Jdbc,请看下面的SQL语句 select * from PhoneData where names = 'yohan' and nickName = 'yoises' and mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000 在这里,有一个问题。也就是说,返回电话号码相同的所有结果。有两行电话号码相同,因此它通过忽略姓名、昵称和全部返回这两行。我想这是因为“或”的说法。我怎样才能解决这个问题?我需要了解姓名=y

请看下面的SQL语句

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

在这里,有一个问题。也就是说,返回电话号码相同的所有结果。有两行电话号码相同,因此它通过忽略姓名、昵称和全部返回这两行。我想这是因为“或”的说法。我怎样才能解决这个问题?我需要了解姓名=yohan和mobileNumber1或mobileNumber2=000000000的详细信息

您需要在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

您缺少括号:

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

运算符的优先级与
不同,因此在组合它们时请确保明确。

非常感谢您的帮助。成功了!我真的很感激:)。