2017-06-21 8 views
1

コード:このクエリを使用して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のようなコースで欲しいです、% ' ですが、間違ったデータが表示されます。私が間違ってやっているところで私を助けてください?

select * from colleges 
where stateid = '2' and (courses like '%,BDes,%' or courses like '%,MDes,%' or courses like '%,PHDDesign,%') order by priority desc 

しかし、私は、正しい方法であなたのSQLを理解して、あなたは非常に悪いDB設計でcsvファイルとしてデータを格納します。

はあなたがまたはオペランドarroundのbraketsを追加する必要があなたに

+0

あなたは何を得ていますか? –

答えて

4

ありがとうございます。

0

あなたは異なった条件braketsであなたのor条件囲む必要があります:あなたの最初の条件は、複数のOR条件でANDを使用しています

select * from colleges where 
     stateid = '2' and 
     (
     courses like '%,BDes,%' or 
     courses like '%,MDes,%' or 
     courses like '%,PHDDesign,%' 
    ) 
order by priority desc 
0

を。だから、すべてのOR条件は

select * from colleges 
where stateid = 2 and (courses like '%,BDes,%' or courses like '%,MDes,%' or courses like '%,PHDDesign,%') order by priority desc 

として括弧内にラップする必要があり、そこには、char/varchar型/テキストなどのデータ型を持つあなたのidカラムです。そうでない場合は、あなたのIDを引用符の中に入れる必要はありません

関連する問題