Ich habe zwei Tabellen;
%Vor%Ich kann den Ländercode mit der IP-Adresse aus der ersten Tabelle auswählen:
%Vor%In logs.logs habe ich alle REMOTE_ADDR (IP Adresse) gesetzt, aber alle COUNTRY_CODE Einträge sind leer. Nun möchte ich COUNTRY_CODE mit Hilfe der ipinfo-Tabelle entsprechend auffüllen. Wie kann ich das tun?
Danke!
Versuchen Sie
%Vor%Wenn es fehlschlägt zu sagen, dass die Spaltentypen übereinstimmen müssen, müssen Sie Ihre logs.logs-Tabelle so ändern, dass die Spalte REMOTE_ADDR vom selben Typ ist (varchar (20)) wie die Tabelle ip_cidr.
Bei einer Aktualisierung mit einer Tabelle verwenden Sie update t1 set c1=x where y
.
Bei einer Aktualisierung mit mehreren Tabellen verwenden Sie update t1, t2 set t1.c1=t2.c2 where t1.c3=t2.c4
Hier ist die relevante Dokumentation Ссылка
Was Sie suchen, ist etwas in der Art von (editted) update logs.logs as l, ipinfo.ip_group_country as c set l.COUNTRY_CODE=c.country_code where c.ip_start <= INET_ATON(l.REMOTE_ADDR) order by c.ip_start asc
Edit: Sie haben Recht, die Max () in der ursprünglichen Antwort, die ich zur Verfügung gestellt habe, konnte nicht funktionieren. Die obige Abfrage sollte, obwohl sie wahrscheinlich weniger effizient ist als etwas wie der Ansatz in der Antwort unten.