2012-08-09 72 views
0

看一看下面的SQL语句SQL语句检索无效数据

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

在这里,有一个问题。这就是返回电话号码相同的所有结果。有两行具有相同的电话号码,因此它会同时返回,忽略名称,昵称和全部。我认为这是因为“或”声明。我该如何解决这个问题?我需要细节谁的名字= YOHAN和mobileNumber1或mobileNumber2 = 000000000

回答

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 
+0

非常感谢您的帮助。有效!对此,我真的非常感激 :)。 – 2012-08-10 17:59:04

3

你缺少括号:

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

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