MySQL Löschen mit Limit

Dies scheint sehr einfach, aber es ist zu scheitern. Alles was ich will zu tun ist, löschen Sie alle, aber die erste Zeile mit dem code unten.

$sql    = "DELETE FROM ".TABLE_PREFIX."news WHERE course_id = $course_id LIMIT 1,18446744073709551615";
$result = mysql_query($sql, $db);

Wenn ich dies tun...

$sql    = "SELECT news_id FROM ".TABLE_PREFIX."news WHERE course_id = $course_id LIMIT 1,18446744073709551615";
$result = mysql_query($sql, $db);
while ($row = mysql_fetch_assoc($result)) {
    echo $row['news_id'] . '<br>';
}

Alle news_ids echo sind mit Ausnahme des ersten. Warum ist die delete-Anweisung nicht arbeiten, wenn die Anweisung select ist arbeiten?

  • Was bestimmt, was die erste Zeile ?
  • Auch das ist nicht die richtige syntax für LIMIT in einer DELETE - Anweisung, die Sie gerade brauchen, um eine ganze Zahl für die maximale Anzahl von Zeilen zu löschen: dev.mysql.com/doc/refman/5.0/en/delete.html
  • Die "GRENZE 1,18446744073709551615" Teil sein soll, das überspringen der ersten Zeile, dann löschen Sie alles andere. Ich habe diese Idee von hier: stackoverflow.com/questions/2827029/mysql-skip-first-10-results
  • Was auch immer Sie tun, ich rate definieren ORDER BY news_id ASC so dass es immer sortiert werden, wie Sie denken, es ist sortiert. Ich habe nie versucht zu löschen, also kann ich nicht viel Hilfe. Sie könnten möglicherweise wählen Sie die erste news_id, dann löschen WHERE course_id = $course_id AND news_id != $news_id
  • diese Frage ist zu WÄHLEN, nicht zu LÖSCHEN. Die beiden Syntaxen sind ähnlich, aber nicht identisch.
  • Sie müssen löschen Sie alle Zeilen bis auf eine, egal welche, oder gibt es eine bestimmte Zeile, die der ersten?
  • news_id ist ein auto-increment Feld. Also, im Grunde die niedrigste news_id für einen bestimmten Kurs wäre die "erste" ein-und es sollte nicht gelöscht werden. Hilft das definieren, dieses problem ein bisschen mehr sein?

InformationsquelleAutor gtilflm | 2013-07-05
Schreibe einen Kommentar