J'ai une table au nom d'ips comme ci-dessous:
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
Supposons que j'ai un countryid
champ sur cette table à partir de la table de pays qui est comme ci-dessous:
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
Il y a environ 100 000 enregistrements dans la table ips. Existe-t-il une requête pour le scénario suivant:
Vérifiez si ips.iso
est égal à country.iso
, puis ajoutez country.coutryid à cet enregistrement. Je ne pouvais penser à aucun moyen de le faire. Avez-vous une idée de comment faire ça?
La solution de @Cade Roux me donne une erreur de syntaxe, la bonne pour mysql 5.5.29 est:
sans le mot clé "FROM".
la source
Cette syntaxe pourrait être mieux lisible
la source
Merci @ Cade, mais j'ai trouvé une solution simple pour cela:
la source