代码:
select * from colleges where stateid = '2' and courses like '%,BDes,%' or courses like '%,MDes,%' or courses like '%,PHDDesign,%' order by priority desc
使用此查询我希望那些拥有stateid的学院是2,并且课程类似于'%,BDes,%'或者类似于'%,MDes,%'或者像'%,PHDDesign,%'等课程 但它显示错误的数据。在哪里我做错了请帮助我?
谢谢
答案 0 :(得分:4)
你必须在或操作数周围添加brakets:
select * from colleges
where stateid = '2' and (courses like '%,BDes,%' or courses like '%,MDes,%' or courses like '%,PHDDesign,%') order by priority desc
但是,正如我以正确的方式理解您的SQL,您将数据存储为csv,这是非常糟糕的数据库设计。
答案 1 :(得分:0)
您需要在不同条件下围绕or
条件:
select * from colleges where
stateid = '2' and
(
courses like '%,BDes,%' or
courses like '%,MDes,%' or
courses like '%,PHDDesign,%'
)
order by priority desc
答案 2 :(得分:0)
您的第一个条件使用AND
多个OR
条件。因此,所有OR
条件必须包含在括号内
select * from colleges
where stateid = 2 and (courses like '%,BDes,%' or courses like '%,MDes,%' or courses like '%,PHDDesign,%') order by priority desc
你的id列的数据类型是char / varchar / text吗?如果没有,那么就不需要在引号中提供你的身份