字段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
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 是一个组合条件嘛 ,
看你的表达 字段1 = A 并且 字段2 = B 并且 (字段3 或者 字段4 = 888)
你就这样写出来就对了啊 列3 和列4 是一个组合条件嘛 ,
#7
如果是Acess数据库的话,字符串处理要小心
如果查询条件的字段为字符串型的,要在字段前面加上:cstr()
其中()里面是字段名,尤其是字段为日期是就出这种错
如果查询条件的字段为字符串型的,要在字段前面加上: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')
如果是字段3和字段4在数据库中定义是字符型,则要写成
字段1 = 'A' and 字段2 = 'B' and (字段3 = '888' or 字段4 = '888')
#15
#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个满足就行了.
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
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 是一个组合条件嘛 ,
看你的表达 字段1 = A 并且 字段2 = B 并且 (字段3 或者 字段4 = 888)
你就这样写出来就对了啊 列3 和列4 是一个组合条件嘛 ,
#7
如果是Acess数据库的话,字符串处理要小心
如果查询条件的字段为字符串型的,要在字段前面加上:cstr()
其中()里面是字段名,尤其是字段为日期是就出这种错
如果查询条件的字段为字符串型的,要在字段前面加上: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')
如果是字段3和字段4在数据库中定义是字符型,则要写成
字段1 = 'A' and 字段2 = 'B' and (字段3 = '888' or 字段4 = '888')
#15
#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个满足就行了.
8楼的答案不错,但理解错了.
SELECT * FROM [表名] WHERE ([字段1]= 'A' And [字段2] = 'B' And [字段3] = 888 )OR([字段1]= 'A' And [字段2] = 'B' And [字段4] = 888 )
字段3和字段4只要1个满足就行了.