2017-09-23 1 views
0

Ich habe diese Anfrage:Abfrage Wildcard mit IN

select * from orders where week_of_year = '40' and user_id = '8631' and charge_date like in ('2017%','2018%') order by id desc limit 1 

ich einen Syntaxfehler in der Nähe von CHARGE_DATE habe, weiß ich, der Fehler Ich vermute, ich nicht wie mit ‚in‘ verwenden kann, da ich sowieso kann die gleiche Logik tun, die tatsächlich funktionieren würde?

Antwort

1

Ich denke, Sie brauchen nur Jahr ab dem Datum und Sie wollen mehrere mögliche Jahre suchen.

Dann sollten Sie Ihre Lösung wie folgt aussehen:

select * from orders where week_of_year = '40' and user_id = '8631' and YEAR(charge_date) REGEXP '2017|2018' order by id desc limit 1 

Update: Alternative Lösung mit IN

select * from orders where week_of_year = '40' and user_id = '8631' and YEAR(charge_date) IN (2017, 2018) order by id desc limit 1 
+0

Ist 'YEAR (...) IN (2017, 2018)' ein Möglichkeit? Sie müssen die Regex-Engine nicht starten, wenn Sie nur ganzzahlige Werte vergleichen. – Progman

+0

@Progman, Sicher ist es eine Option. Als alternative Lösung hinzugefügt. –