Saya memiliki tabel atas nama ips seperti di bawah ini:
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
Mari kita asumsikan saya memiliki countryid
bidang pada tabel ini dari tabel negara yaitu sebagai berikut:
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
Ada sekitar 100.000 catatan dalam tabel ips. Apakah ada permintaan untuk skenario berikut:
Periksa apakah ips.iso
sama dengan country.iso
, jika sama maka tambahkan country.coutryid ke catatan itu. Saya tidak bisa memikirkan cara untuk melakukannya. Apakah Anda punya ide bagaimana melakukannya?
Solusi @Cade Roux memberi saya kesalahan sintaks, yang benar untuk mysql 5.5.29 adalah:
tanpa kata kunci "FROM".
sumber
Sintaks ini mungkin lebih baik dibaca
sumber
terima kasih @Cade, tapi saya menemukan solusi sederhana untuk itu:
sumber