2017-05-23 3 views
0

Diese Abfrage funktioniert nicht auf mysql v 5.7.18.Unterabfrage funktioniert nicht mit MySQL (Version 5.7.18)

Aber diese Abfrage funktioniert perfekt in der Vergangenheit Version von MySQL (5.5.46)

SELECT car_id FROM (
        SELECT car_id , 
         CASE WHEN (unix_timestamp(STR_TO_DATE(car_from, '%Y-%m-%d %H:%i:%s')) > unix_timestamp(STR_TO_DATE('2017-03-15 13:00', '%Y-%m-%d %H:%i:%s')) 
            || unix_timestamp(STR_TO_DATE('2017-03-09 17:00', '%Y-%m-%d %H:%i:%s')) > unix_timestamp(STR_TO_DATE( car_to , '%Y-%m-%d %H:%i:%s')) 
            || unix_timestamp(STR_TO_DATE('2017-03-15 13:00', '%Y-%m-%d %H:%i:%s')) < unix_timestamp(STR_TO_DATE('2017-03-09 17:00', '%Y-%m-%d %H:%i:%s')) 
            || unix_timestamp(STR_TO_DATE( car_to, '%Y-%m-%d %H:%i:%s')) < unix_timestamp(STR_TO_DATE( car_from, '%Y-%m-%d %H:%i:%s')) 
           ) THEN 0 
        ELSE 1 END as intersect_time 
        FROM car_booking_master 
        WHERE state = '1' 
        GROUP BY car_id 
        HAVING intersect_time = 1 
        ) AS virtual 

Auf der neue MySQL-Version, die ich diesen Fehler

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'virtual 
LIMIT 0, 25' at line 15 
+0

Haben Sie die gesamte Abfrage gebucht? Ich sehe "LIMIT" nirgendwo, aber es erscheint in der Fehlermeldung. –

+0

ja das ist komplett bekommen Limit Text in Fehlerausgabe –

+0

Die äußere Abfrage ergibt keinen Sinn für mich. Wenn Sie bereits nach "car_id" aggregiert haben, warum sollten Sie dann einen anderen auswählen? Übrigens hat Ihre Unterabfrage auch ein Problem, weil Sie nicht aggregierte Spalten im CASE-Ausdruck auswählen. –

Antwort

0

bin immer Wenn Sie versuchen, zu geben, Ihre Unterabfrage ein Alias, sollten Sie AS in Ihrer letzten Zeile entfernen.

+0

Ich denke, AS ist in MySQL optional. –

+0

immer noch Fehler ist gleich nach dem Entfernen von "AS". Und es arbeitete an der vergangenen Version von MySQL –

+0

Das Problem war mit dem Stichwort "virtual" –

1

Das Problem bei der MySQL-Version war das Schlüsselwort, das ich "virtuell" verwende. Nach der Verwendung von "v" anstelle von "virtuellen" Abfrage funktioniert gut

+0

'funktioniert gut' ist eine relative Sache. Ihre 'GROUP BY' hat ein logisches Problem, also nein, es ist nicht in Ordnung. Wenn Sie besser erklärt hätten, was die Abfrage zu tun versucht, haben Sie möglicherweise eine sinnvollere Antwort erhalten. –