У меня есть таблица, скажем, country_previous и другая таблица country_current. Оба одинаковы по структуре, только имена разные. См их структуру ниже:
CREATE TABLE `country_previous` (
`name` varchar(70) NOT NULL DEFAULT '',
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 MAX_ROWS=100000000 AVG_ROW_LENGTH=50
и другой
CREATE TABLE `country_current` (
`name` varchar(70) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
Таким образом, как показывают названия, у country_previous есть все названия стран, скажем, год назад, а у country_current есть все страны до сих пор. Поэтому я хочу получить все страны, которые были созданы после последнего обновления country_previous. Я пробовал этот запрос,
но в нем много записей из country_previous.
SELECT count(*) FROM country_previous NATURAL RIGHT OUTER JOIN country_current WHERE country_previous.name IS NULL;
Это дает больше, чем ожидалось. Например: у моей страны есть 90 стран, а у страны 110 стран. Затем я должен получить только новые страны с тех пор (последнее обновление country_previous), что равно 110 - 90 = 20. Но я получаю больше 20.
так что не так с запросом и что мне делать?
Заранее спасибо.
PS: эта идея о стране - просто пример, который действительно помогает мне заставить других понять, что мне действительно нужно, и на самом деле я ничего не делаю с названиями стран.