Annika: SQL Fehler

Hallo,

ich habe folgende sql abfrage:

UPDATE tabelle SET time = '91' WHERE token = '292629526' AND time = 0 ORDER BY date DESC LIMIT 1

und bekomme folgende fehler:

#1: You have an error in your SQL syntax near 'ORDER BY dt DESC LIMIT 1' at line 1

kann mir jemand sagen was falsch an meiner abfrage ist?

  1. echo $begrüßung;

    ich habe folgende sql abfrage:
    UPDATE tabelle SET time = '91' WHERE token = '292629526' AND time = 0 ORDER BY date DESC LIMIT 1
      und bekomme folgende fehler:
    #1: You have an error in your SQL syntax near 'ORDER BY dt DESC LIMIT 1' at line 1
      kann mir jemand sagen was falsch an meiner abfrage ist?

    Den Fehler kann ich mit dem gegebenen Statement nicht nachvollziehen. Welche MySQL-Version verwendest du? Wie lautet das wirklich verwendete Statement (die Fehlermeldung passt nämlich nicht ganz dazu)?

    echo "$verabschiedung $name";

  2. Hi,

    wird vielleicht erst ab MySQL v5 unterstützt, was du aber nicht im Einsatz hast?

    Ciao, Frank

    P.S: ORDER BY date
    oder ORDER BY dt    ??

  3. Hello,

    kann mir jemand sagen was falsch an meiner abfrage ist?

    na ja, wenn ich Datenbanksystem wäre hätte ich mich vermutlich auch überrascht gezeigt: was versuchst du bei einem UPDATE durch Sortierung und LIMIT zu erreichen? Versuchst du irgendwelche Gemeinheiten von "nur ein Datensatz aktualisieren" oder sowas? Das finde ich persönlich eine haarsträubende Lösung...Wenn das nur aus Gewohnheit da steht, dann lass einfach alles ab ORDER BY weg.

    MfG
    Rouven

    --
    -------------------
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. echo $begrüßung;

      na ja, wenn ich Datenbanksystem wäre hätte ich mich vermutlich auch überrascht gezeigt: was versuchst du bei einem UPDATE durch Sortierung und LIMIT zu erreichen?

      Das ist unter MySQL korrekte Syntax. Man kann damit in einer sortierten Menge eine definierte Anzahl von Datensätzen bearbeiten. Siehe UPDATE Syntax.

      echo "$verabschiedung $name";

      1. Hello,

        Das ist unter MySQL korrekte Syntax. Man kann damit in einer sortierten Menge eine definierte Anzahl von Datensätzen bearbeiten. Siehe UPDATE Syntax.

        hmh, ich legs mal in der hintersten Ecke meines Kopfes ab, aber ich finde das ist eine arg konfuse Vorgehensweise. Es wird sicherlich Fälle geben, wo man das braucht, aber mir sind in fast 10 Jahren noch keine im persönlichen Gebrauch unter gekommen...

        MfG
        Rouven

        --
        -------------------
        When the only tool you've got is a hammer, all problems start to look like nails.
  4. Hi ihr,

    also das Problem war das es mit Version 5 (und anscheinend auch 4)
      ohne Probleme klappt, jedoch MySQL 3.x das nicht mitgemacht hat.
      Danke für eure Antworten!

    Liebe Grüße, Annika

    1. Hallo

      also das Problem war das es mit Version 5 (und anscheinend auch 4)
        ohne Probleme klappt, jedoch MySQL 3.x das nicht mitgemacht hat.

      deswegen fragte dedlfix nach der Version, deswegen erscheint bei Auswahl des Themenbereichs DATENBANK extra folgender Hinweis:

      Hinweis: Vergiss nicht, Namen und Version der von dir verwendeten Datenbank anzugeben!

      Und die MySQL-Doku zu den älteren MySQL-Versionen sagt zu Erweiterungen der
      UPDATE-Syntax in http://dev.mysql.com/doc/refman/4.1/en/update.html:

      <zitat>
       Starting from MySQL 3.23, you can use LIMIT row_count to restrict the scope of the UPDATE. A LIMIT clause works as follows:

      *

      Before MySQL 4.0.13, LIMIT is a rows-affected restriction. The statement stops as soon as it has changed row_count rows that satisfy the WHERE clause.
          *

      From 4.0.13 on, LIMIT is a rows-matched restriction. The statement stops as soon as it has found row_count rows that satisfy the WHERE clause, whether or not they actually were changed.

      If an UPDATE statement includes an ORDER BY clause, the rows are updated in the order specified by the clause. ORDER BY can be used from MySQL 4.0.0.
      </zitat>

      Ich gebe gern zu, dass ich bei MySQL nicht mehr mit 3.23.x (oder gar älter) rechne. Dafür kann MySQL 3.23 einfach viel zu wenig.

      Freundliche Grüße

      Vinzenz