mysql查询显示错误的数据?

时间:2017-06-21 07:26:00

标签: mysql

代码:

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,%'等课程 但它显示错误的数据。在哪里我做错了请帮助我?

谢谢

3 个答案:

答案 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吗?如果没有,那么就不需要在引号中提供你的身份