У меня есть таблица на имя ips, как показано ниже:
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
Предположим, у меня есть countryid
поле в этой таблице из таблицы стран, как показано ниже:
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
В таблице ips около 100 000 записей. Есть ли запрос для следующего сценария:
Проверьте, ips.iso
равен country.iso
ли он, равен ли он, то добавьте country.coutryid к этой записи. Я не мог придумать, как это сделать. У вас есть идеи, как это сделать?
Решение @Cade Roux дает мне синтаксическую ошибку, правильная для mysql 5.5.29:
без ключевого слова "ОТ".
источник
Этот синтаксис может быть лучше читаемым
источник
спасибо @Cade, но я нашел для этого простое решение:
источник