2011-10-10 2 views
0

0 데이터입니다 :SELECT 데이터를 반환하지만 업데이트는 영향을받는 행을 제공합니다 : 여기

CREATE TABLE `Charlies_Sierra_Papa` (
    `Mike` int(5) default NULL, 
    `cpf` char(11) default NULL, 
    `idFoxtrot` int(3) default NULL, 

) ENGINE=MyISAM AUTO_INCREMENT=254098 DEFAULT CHARSET=utf8; 

INSERT INTO `Charlies_Sierra_Papa` VALUES ('1', '12345678910', '12'); 
INSERT INTO `Charlies_Sierra_Papa` VALUES ('2', '11121314157', '12'); 
INSERT INTO `Charlies_Sierra_Papa` VALUES ('3', '57585960610', '12'); 


CREATE TABLE `Charlies` (
    `idCharlie` int(20) NOT NULL auto_increment, 
    `cpf` varchar(11) NOT NULL default '' 
    PRIMARY KEY (`idCharlie`), 
    UNIQUE KEY `cpf` (`cpf`), 
    UNIQUE KEY `idCharlie` (`idCharlie`), 
) ENGINE=MyISAM AUTO_INCREMENT=264670 DEFAULT CHARSET=latin1; 

INSERT INTO `Charlies` VALUES ('1', '12345678910'); 
INSERT INTO `Charlies` VALUES ('2', '11121314157'); 
INSERT INTO `Charlies` VALUES ('3', '57585960610'); 


CREATE TABLE `Mike` (
    `Mike` int(5) unsigned zerofill NOT NULL auto_increment, 
    `idCharlie` int(11) NOT NULL default '0', 
    PRIMARY KEY (`Mike`), 
    UNIQUE KEY `idCharlie` (`idCharlie`) 
) ENGINE=MyISAM AUTO_INCREMENT=12043 DEFAULT CHARSET=latin1; 

INSERT INTO `Mike` VALUES ('00001', '51214'); 
INSERT INTO `Mike` VALUES ('00002', '174135'); 
INSERT INTO `Mike` VALUES ('00003', '203553'); 

을 그리고 여기있는 SELECT와 UPDATE :

UPDATE Charlies_Sierra_Papa AS csp, Charlies AS Cha, Mike_oc AS Mik 
SET csp.cpf = cast(Cha.cpf AS char(11)) 
WHERE csp.cpf = Cha.cpf 
AND Cha.idCharlie = Mik.idCharlie 
AND csp.Mike = Mik.Mike 
AND csp.idFoxtrot = 16 


SELECT * FROM Charlies_Sierra_Papa AS csp, Charlies AS Cha, Mike_oc AS Mik 
/*SET csp.cpf = cast(Cha.cpf AS char(11))*/ 
WHERE csp.cpf = Cha.cpf 
AND Cha.idCharlie = Mik.idCharlie 
AND csp.Mike = Mik.Mike 
AND csp.idFoxtrot = 16 

내 문제는 다음 SELECT가 예상 값을 반환 ,하지만 그것을 실행하면 성가신 "영향을받는 행 : 0"업데이트가 제공됩니다.

실마리가 있습니까?

+0

실제로 'UPDATE'에서 얼마나 많은 행이 변경 되었습니까? 즉, UPDATE 문이 발생한 후 다른 값을 가졌습니까? [documentation] (http://dev.mysql.com/doc/refman/5.0/en/update.html)에 따르면 "UPDATE는 실제로 변경된 행 수를 반환합니다." " – mellamokb

+0

Do not use 암시 적 SQL 조인, 명시 적 조인 구문 사용 : UPDATE Charlies_Sierra_Papa csp INNER JOIN Charlies Cha ON (csp.cpf = Cha.cpf) INNER JOIN Mike_oc Mik ON (Cha.idCharlie = Mik.idCharlie 및 csp.Mike = Mik.Mike) SET csp.cpf = cast (Cha.cpf AS char (11)) WHERE csp.idFoxtrot = 16' – Johan

답변

0

그것은 사소한 오류입니다 :

내가 csp.cpf = Cha.cpf 를 업데이트하려면 노력하고있어하지만 나는 또한 = Cha.cpf 그래서, 행이 업데이트되지 csp.cpf없이 시가를 묶는거야.

관련 문제