2017-06-21 5 views
1

Code:mysql Abfrage falsche Daten anzeigen?

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

diese Abfrage verwenden möchte ich jene Hochschulen, die StateID haben 2 und Kurse wie '%, BDEs,%' oder Kurse wie '%, MDes,%' oder Kurse wie ‚%, PHDDesign ,% ' , aber es werden falsche Daten angezeigt. wo ich falsch liege, bitte hilf mir?

Danke

+0

Was ist die Ausgabe, die Sie bekommen? –

Antwort

4

Sie haben brakets arround die oder Operanden hinzuzufügen:

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

Aber wie ich Ihre SQL in der richtigen Art und Weise zu verstehen, Sie speichern Daten als csv, die sehr schlecht db Design.

0

Sie benötigen or Bedingungen in einem anderen Zustand brakets umgeben:

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

Ihre erste Bedingung verwendet AND mit mehreren OR Bedingungen. So ist die ganze OR Bedingung muss innerhalb der Klammern als

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

gewickelt werden und ist dort Ihre ID-Spalte Datentyp, wie char/varchar/Text. Wenn nicht, dann müssen Sie Ihre ID nicht in die Anführungszeichen eingeben