Mam tabelę na imię ips, jak poniżej:
CREATE TABLE `ips` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`begin_ip_num` int(11) unsigned DEFAULT NULL,
`end_ip_num` int(11) unsigned DEFAULT NULL,
`iso` varchar(3) DEFAULT NULL,
`country` varchar(150) DEFAULT NULL
) ENGINE=InnoDB
Załóżmy, że mam countryid
pole na tej tabeli z tabeli kraju, która jest jak poniżej:
CREATE TABLE `country` (
`countryid` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`ordering` smallint(5) unsigned NOT NULL DEFAULT '0',
`iso` char(2) NOT NULL,
PRIMARY KEY (`countryid`)
) ENGINE=InnoDB
Tabela IPS zawiera około 100 000 rekordów. Czy istnieje zapytanie dotyczące następującego scenariusza:
Sprawdź, czy ips.iso
jest równe country.iso
, czy jest równe, a następnie dodaj country.coutryid do tego rekordu. Nie mogłem wymyślić żadnego sposobu, aby to zrobić. Czy masz jakiś pomysł, jak to zrobić?
Rozwiązanie @Cade Roux daje mi błąd składniowy, poprawny dla mysql 5.5.29 to:
bez słowa kluczowego „FROM”.
źródło
Ta składnia może być lepiej czytelna
źródło
dzięki @Cade, ale znalazłem proste rozwiązanie:
źródło