Gewusst wie: löschen von Zeilen aus einer Tabelle mit mehreren select in DB2
Will ich löschen, nur die Zeilen, die folgende Anweisung gibt, wie kann ich das tun?
select usersernum,username,useremail
from core.appuser
where usersernum in (
select ch.usersernum
from core.appusersession ch
where ch.usersernum not in (
select usersernum
from (
select max(starttime) as maxstarttime
, usersernum
from core.appusersession vip
where vip.starttime >= '2011-01-01 00:00:00'
group by usersernum
)
)
group by usersernum
)
order by useremail
;
- Können Sie das Ziel der Abfrage oben in Englisch? Es sieht aus wie diese Abfrage könnte vereinfacht werden. Auch was die Plattform Ihre DB2 laufen? (IBM i, LUW und z/OS)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
Du nicht sagst auf welcher Plattform oder die version von DB2, die Sie ausführen, aber wenn Sie sind auf DB2 9.7 für Linux, UNIX und Windows oder höher verwenden, können Sie das super-handy "löschen" aus wählen Sie":
Manchmal hilft es, einen Schritt zurück und Fragen Sie sich, Was ist das wirkliche Ziel ist hier, in "Geschäftsbedingungen" oder jeden-Tag-Sprache, die statt SQL.
Ihre Abfrage sieht aus wie es hat eine Reihe von unnötigen Schichten. Es scheint, dass das, was Sie wirklich wollen, zu tun ist, entfernen Sie inaktive Nutzer, also diejenigen, die noch nicht begonnen haben, eine Sitzung seit Beginn des Jahres 2011.
Ist das nicht viel einfacher?