2015-04-02 63 views
0

我的更新查詢有問題。我需要它的工作原理:PMySql更新程序錯誤

該程序選擇所有重複記錄(需要重新創建,選擇和更新值)

DELIMITER $$ 
USE `bgw_r`$$ 
DROP PROCEDURE IF EXISTS `tpl_pobierz_dodane`$$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `tpl_pobierz_dodane`(puzytkownik VARCHAR(50), psesja VARCHAR(50)) 
BEGIN 
SELECT a.`id` AS idd FROM `paliwa_temp` AS a INNER JOIN `paliwo_fv` AS b 
ON (a.`numerRejestracyjny` = b.`numer_rejestracyjny`) 
WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`; # GROUP BY id 
END$$ 
DELIMITER ; 

或創建更新爲其它值的過程:

DELIMITER $$ 
USE `bgw_r`$$ 
DROP PROCEDURE IF EXISTS `tpl_ustaw_jako_duplikaty`$$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `tpl_ustaw_jako_duplikaty`(puzytkownik VARCHAR(50), psesja VARCHAR(50)) 
BEGIN 
UPDATE a 
    SET a.`duplikat` = "true" 
    FROM `paliwa_temp` AS a 
    INNER JOIN `paliwo_fv` AS b 
    ON(b.`numer_rejestracyjny` = a.`numerRejestracyjny`) 
    WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`; 
END$$ 
DELIMITER ; 

錯誤更新詢問: 錯誤代碼:1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `paliwa_temp` as a 
    INNER JOIN `paliwo_fv` as b 
    on(b.`numer_rejestracyjny' at line 5 

不知道爲什麼:/

回答

0

正確的加入更新的說法應該是作爲

update paliwa_temp a 
INNER JOIN `paliwo_fv` AS b 
ON(b.`numer_rejestracyjny` = a.`numerRejestracyjny`) 
SET a.`duplikat` = "true" 
WHERE a.`sesja` = psesja 
AND b.`data_tankowania` = a.`dataTankowania` 
AND a.`iloscPaliwa` = b.`wydano_lit 
+0

感謝您的時間:) – Sahee 2015-04-02 08:03:03

0

更新的語法與加入必須是:

UPDATE `paliwa_temp` AS a 
INNER JOIN `paliwo_fv` AS b 
    ON(b.`numer_rejestracyjny` = a.`numerRejestracyjny`) 
    SET a.`duplikat` = "true" 
      WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`;