0

看看下面的 SQL 语句

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

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

4

2 回答 2

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
于 2012-08-09T15:36:39.397 回答
3

你缺少括号:

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

AND运算符具有不同的优先级,因此OR请确保在组合它们时是明确的。

于 2012-08-09T15:38:00.493 回答