SQL多条件 并且(AND) 或者(OR) 怎么写

时间:2021-04-22 03:02:56
SELECT * FROM [表名] WHERE [字段1]= 'A' And [字段2] = 'B' And ([字段3] = 888 OR [字段4] = 888 )

字段1和字段2是文本型,字段3和字段4是数字型

我想查询 , 字段1 = A  并且 字段2 = B 并且 (字段3 或者 字段4 = 888)

上面的SQL为什么不正确,正确的该怎么写?

16 个解决方案

#1


粗一看应该没错,你可以用sql server的sql编辑器生成sql语句,对比和你写的是否一样,

#2


vs也有图形化的sql语句编辑工具,

#3


很可能是你的字段名打错了,

#4


逻辑上应该没有错误

#5


语句看不出问题

and 优先级 大于 or

#6


select * from tb where cell1="A" and cell2="B" and (cell3=3 or cell4=3)
看你的表达 字段1 = A 并且 字段2 = B 并且 (字段3 或者 字段4 = 888)
你就这样写出来就对了啊  列3 和列4 是一个组合条件嘛 ,


#7


如果是Acess数据库的话,字符串处理要小心
如果查询条件的字段为字符串型的,要在字段前面加上:cstr()
其中()里面是字段名,尤其是字段为日期是就出这种错

#8


SELECT * FROM [表名] WHERE ([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 )OR([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 And [字段4] = 888 )试试这个。

#9


逻辑应该没错,是可以这样用,自己调试试试

#10


([字段3] = '888' OR [字段4] = '888' ) 都加上 单引号,试试

#11


没问题,看看你的数据类型对不?

#12


你要看看你数据库中3和4字段是否真的是数字型的,数字型的查询是不用加单引号的,当然你加了也没有问题的,所以很可能是表有问题吧

#13


看下实际的SQL 是怎样的

#14


字段1 = 'A' and 字段2 = 'B' and (字段3 = 888 or 字段4 = 888)

如果是字段3和字段4在数据库中定义是字符型,则要写成

字段1 = 'A' and 字段2 = 'B' and (字段3 = '888' or 字段4 = '888')

#15


该回复于2011-12-12 09:11:40被版主删除

#16


谢谢大家,这几天忙其他事没来得及结贴.

8楼的答案不错,但理解错了.

SELECT * FROM [表名] WHERE ([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 )OR([字段1]= 'A' And [字段2] = 'B' And [字段4] = 888 )

字段3和字段4只要1个满足就行了.

#1


粗一看应该没错,你可以用sql server的sql编辑器生成sql语句,对比和你写的是否一样,

#2


vs也有图形化的sql语句编辑工具,

#3


很可能是你的字段名打错了,

#4


逻辑上应该没有错误

#5


语句看不出问题

and 优先级 大于 or

#6


select * from tb where cell1="A" and cell2="B" and (cell3=3 or cell4=3)
看你的表达 字段1 = A 并且 字段2 = B 并且 (字段3 或者 字段4 = 888)
你就这样写出来就对了啊  列3 和列4 是一个组合条件嘛 ,


#7


如果是Acess数据库的话,字符串处理要小心
如果查询条件的字段为字符串型的,要在字段前面加上:cstr()
其中()里面是字段名,尤其是字段为日期是就出这种错

#8


SELECT * FROM [表名] WHERE ([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 )OR([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 And [字段4] = 888 )试试这个。

#9


逻辑应该没错,是可以这样用,自己调试试试

#10


([字段3] = '888' OR [字段4] = '888' ) 都加上 单引号,试试

#11


没问题,看看你的数据类型对不?

#12


你要看看你数据库中3和4字段是否真的是数字型的,数字型的查询是不用加单引号的,当然你加了也没有问题的,所以很可能是表有问题吧

#13


看下实际的SQL 是怎样的

#14


字段1 = 'A' and 字段2 = 'B' and (字段3 = 888 or 字段4 = 888)

如果是字段3和字段4在数据库中定义是字符型,则要写成

字段1 = 'A' and 字段2 = 'B' and (字段3 = '888' or 字段4 = '888')

#15


该回复于2011-12-12 09:11:40被版主删除

#16


谢谢大家,这几天忙其他事没来得及结贴.

8楼的答案不错,但理解错了.

SELECT * FROM [表名] WHERE ([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 )OR([字段1]= 'A' And [字段2] = 'B' And [字段4] = 888 )

字段3和字段4只要1个满足就行了.