alle Datensätze außer max 3 auf grundlegende von visitdate löschen Umschreiben Code mit einiger (jeder) Formatierung und das Problem wird noch deutlicher sein. Es hilft MySQL auch, einen Fehler zu liefern, der Ihnen mehr helfen kann (zB: error in line 8: ...
).
Delete from IPADDRESS
where visitdate Not in
(SELECT visitdate
FROM
(SELECT visitdate --- this is
FROM IPADDRESS --- the
WHERE USERNAME='MGSH0002' --- derived
ORDER BY visitdate DESC --- table
) x --- alias `x` added
where ROWNUM < 4
)
and USERNAME='MGSH0002'
Aber ich glaube nicht, dass MySQL ROWNUM
hat. Sind Sie sicher, dass dies für MySQL und nicht für Oracle ist? Weil MySQL einige Einschränkungen für DELETE
hat und die zu löschende Tabelle in WHERE
referenziert. Man könnte so etwas wie verwenden:
DELETE i
FROM
IpAddress AS i
CROSS JOIN
(SELECT visitdate
FROM IpAddress
WHERE username = 'MGSH0002'
ORDER BY visitdate DESC
LIMIT 1 OFFSET 2
) AS tmp
WHERE i.username = 'MGSH0002'
AND i.visitdate < tmp.visitdate
meine problm noch ungelöst ist plz mir helfen, wie diese Abfrage in meinem SQL ausführen können "Delete von IPADDRESS wo visitdate Nicht in (SELECT visitdate VON (SELECT visitdate VON IPADDRESS WHERE USERNAME = 'MGSH0002' ORDER VON visitdate DESC) wo ROWNUM <4) und USERNAME = 'MGSH0002' " – manorma
Nein, vergiss meine vorherigen Kommentare. Die Fragen sind nicht gleich, ähnlich, aber nicht gleich. –