Хорошо, у меня есть несколько операторов MySQL, которые приводят к проблеме, связанной с обновлением определенной таблицы. Прежде всего позвольте мне показать вам мой код, то я объясню, что я пытаюсь сделать:таблица обновления mysql, если запись не находится в таблице temp
/*STEP 1 - create a temporary table to temporarily store the loaded csv*/
CREATE TEMPORARY TABLE IF NOT EXISTS `temptable1` LIKE `first60dayactivity`;
/*STEP 2. load the csv into the previously created temporary table*/
LOAD DATA LOCAL INFILE '/Users/me/Downloads/some.csv'
IGNORE INTO TABLE `{temptable}`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
SET CUSTID = 1030,
CREATED = NOW(),
isactive = 1;
/*STEP 3. update first60dayactivity table changing isactive for records that are not in the temptable*/
UPDATE `first60dayactivity` fa
INNER JOIN `temptable1` temp
ON temp.`mid` = fa.`mid`
AND temp.`primarypartnername` = fa.`primarypartnername`
AND temp.`market` = fa.`market`
AND temp.`agedays` = fa.`agedays`
AND temp.`opendate` = fa.`opendate`
AND temp.`CUSTID` = fa.`CUSTID`
SET fa.isactive = IF(temp.`mid` IS NULL, 0, 1);
/*STEP 4. insert the temp table records into the real table*/
.....blah blah blah.....
Ok, сначала создать временную таблицу, так что у нас есть таблица для хранения импортированного .csv данных. Затем импортируйте данные .csv во временную таблицу (все это прекрасно работает до сих пор).
Здесь я столкнулся с проблемой. Я хочу обновить столбец каждой записи таблицы first60dayactivity
до 0
, если запись НЕ найдена в temptable1
(после моего импорта). В конечном счете, я собираю CSV, CSV имеет новые данные в реальном времени, которые следует считать «активными», и мне нужно установить старые данные в inactive
. Таким образом, обновление делает INNER JOIN для сопоставления по нескольким столбцам, чтобы узнать, найдена ли запись в temptable1
, если она не задана для активности 0
, если она находится в temptable1
, тогда убедитесь, что статус активности 1
.
Проблема заключается в том, что все записи в first60dayactivity
сохраняют свойство 1
, чтобы указать, что он активен. Ничто не обновляется до 0
, хотя у меня есть доказательство наличия новых записей в пределах temptable1
... Может ли кто-нибудь сказать мне, что я делаю неправильно в моем запросе?
Заранее благодарен!
Был ли двойной отрицательный («никогда не может быть NULL») специально? Я думаю, не :) – sehe
Спасибо, ты прав, конечно. Это была ошибка. Я отредактировал свой ответ. – VMai
похоже, что вы решили мою проблему, я знал, что другой взгляд на это поможет! Большое спасибо. – sadmicrowave