关于一个多重条件的select语句

media2 2005-03-14 01:17:00
我想实现一个多重条件的查询功能,有这样一句话:
select * from userinfo where class1 like '2001%' or department = '电子系' and special = '金融管理' and sex = '女'

其中的and 和 or是一个下拉菜单,可让用户自己选择,但我发现,这样子用后,一旦前面一个条件用了or则后面的条件就不起作用了。如果前面的条件是and,则后面的条件可以正常使用。

要达到我的这个目的,这个语句应该怎样写?

大家帮忙啊!!!

先谢过,分很多哦。
...全文
404 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfwclyms 2005-03-15
  • 打赏
  • 举报
回复
注意条件的限制范围,括号是不能乱括的,要是有不少or很麻烦啊
wfwclyms 2005-03-15
  • 打赏
  • 举报
回复
但在实际使用的时候应该有or的时候啊。比如,我想要显示2001级的学生和电子系的学生,同时,只显示女生:

select * from userinfo where class1 like '2001%' or department = '电子系' and sex = '女'

这样的结果是,能够正常显示2001和所有学生,能够显示电子系的所有学生,但男生和女生都显示出来了,不能只显示女生。

只要用了or后面的条件就失效了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
还有
select * from userinfo where class1 like '%2001%' or
(department = '电子系' and special = '金融管理' and sex = '女')

这样试试


如果这样的话,那2001级的男生和女生都显示出来了。我现在只要显示出来女生。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你没明白:你要查询的其实是“2001级的学生和电子系的学生”中所有的女生。
上面的其实是查了电子系的所有女生和2001级的所有人

select * from userinfo where (class1 like '%2001%' or
department = '电子系' and special = '金融管理') and sex = '女'

你再试试看
银狐被占用 2005-03-15
  • 打赏
  • 举报
回复
没太看明白什么意思。
楼主能说明你的SQL语句是怎么得到的吗?
应该是根据提交页面而打印出来的吧。
zhanglemail 2005-03-15
  • 打赏
  • 举报
回复
很复杂!
enjsky 2005-03-15
  • 打赏
  • 举报
回复
搞清楚条件之间的关系,用()来区别开就可以了啊!

select * from userinfo where (class1 like '2001%') or (department = '电子系' and special = '金融管理' and sex = '女')
longsnow 2005-03-15
  • 打赏
  • 举报
回复
多个or都排在最后面不影响的啊
ksn520 2005-03-15
  • 打赏
  • 举报
回复
用小括号()
media2 2005-03-15
  • 打赏
  • 举报
回复
把or放在最后面是行的。

只是,这样一来,那个sql语句的构建非常复杂,我没有搞定哦!!!!
forlovebin 2005-03-14
  • 打赏
  • 举报
回复
把or 放在最后面也不行,唉,这个问题我也是弄了好久也没解决
media2 2005-03-14
  • 打赏
  • 举报
回复
难道只有把 or 放在最后面?

但如果万一有二个或多个or怎么办呢?
media2 2005-03-14
  • 打赏
  • 举报
回复
to mymyai123:

select * from userinfo where class1 like '%2001%' or
(department = '电子系' and special = '金融管理' and sex = '女')

这样试试


如果这样的话,那2001级的男生和女生都显示出来了。我现在只要显示出来女生。
media2 2005-03-14
  • 打赏
  • 举报
回复
但在实际使用的时候应该有or的时候啊。比如,我想要显示2001级的学生和电子系的学生,同时,只显示女生:

select * from userinfo where class1 like '2001%' or department = '电子系' and sex = '女'

这样的结果是,能够正常显示2001和所有学生,能够显示电子系的所有学生,但男生和女生都显示出来了,不能只显示女生。

只要用了or后面的条件就失效了。
mymyal123 2005-03-14
  • 打赏
  • 举报
回复
select * from userinfo where class1 like '%2001%' or
(department = '电子系' and special = '金融管理' and sex = '女')

这样试试
mymyal123 2005-03-14
  • 打赏
  • 举报
回复
如果是自动生成的那么生成的时候就不要用or 根据选择来判断所用的语句:

select * from userinfo where class1 like '%2001%' and special = '金融管理' and sex = '女'

select * from userinfo where class1 department = '电子系' and special = '金融管理' and sex = '女'


media2 2005-03-14
  • 打赏
  • 举报
回复
我的每一个条件都是一个下拉菜单,sql语句是根据用户的不同选择来自动生成的。
media2 2005-03-14
  • 打赏
  • 举报
回复
问题的关键在这里,如果用户全部选择and就没有问题,但如果用户其中一个条件选择了or,则从这个以后的条件就不能正常实现了。

我曾试着想加括号来分隔条件什么的,但没有成功。
mymyal123 2005-03-14
  • 打赏
  • 举报
回复
select * from userinfo where class1 like '%2001%' or department = '电子系' and special = '金融管理' and sex = '女'
jarraytan 2005-03-14
  • 打赏
  • 举报
回复
select * from userinfo where (class1 like '2001%' or department = '电子系') and special = '金融管理' and sex = '女'
mymyal123 2005-03-14
  • 打赏
  • 举报
回复
晕,没看清,写错了
longsnow 2005-03-14
  • 打赏
  • 举报
回复
你把or的放在最后面呢?或者做两个选择,or的单独出来
加载更多回复(1)

28,404

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧