MySql varchar字段从两个不同的表中比较`&引用;内容

MySql varchar字段从两个不同的表中比较`&引用;内容,mysql,varchar,Mysql,Varchar,MySQL中的varchar字段面临一个奇怪的比较错误。 我有两个表格如下: CREATE TABLE IF NOT EXISTS tmpMntYrTbl( sfr_value INTEGER, sfr_month VARCHAR(25) ); CREATE TEMPORARY TABLE IF NOT EXISTS tmpTbl( sfr_responsive_avg INTEGER,

MySQL中的varchar字段面临一个奇怪的比较错误。 我有两个表格如下:

CREATE TABLE IF NOT EXISTS tmpMntYrTbl(
  sfr_value INTEGER,                    
  sfr_month VARCHAR(25)
);

CREATE TEMPORARY TABLE IF NOT EXISTS tmpTbl(                           
  sfr_responsive_avg INTEGER,                    
  sfr_month VARCHAR(25)
);
其内容如下:

sfr_value   sfr_month
0   Jan`12
0   Feb`12
0   Mar`12
0   Apr`12
0   May`12
0   Jun`12
0   Jul`12
0   Aug`12
0   Sep`12
0   Oct`12
0   Nov`12
0   Dec`12
0   Jan`13
0   Feb`13
0   Mar`13
0   Apr`13
0   May`13
0   Jun`13
0   Jul`13
0   Aug`13
0   Sep`13
0   Oct`13
0   Nov`13
0   Jan`12
0   Feb`12
0   Mar`12
0   Apr`12
0   May`12
0   Jun`12
0   Jul`12
0   Aug`12
0   Sep`12
0   Oct`12
0   Nov`12
0   Dec`12
0   Jan`13
0   Feb`13
0   Mar`13
0   Apr`13
0   May`13
0   Jun`13
0   Jul`13
0   Aug`13
0   Sep`13
0   Oct`13
0   Nov`13

现在我试图将临时表tmpTbl的sfr_responsive_avg值复制到tmpMntYrTbl表,所以我正在这样做

UPDATE tmpMntYrTbl SET sfr_value= (SELECT sfr_responsive_avg FROM tmpTbl)
                   WHERE tmpTbl.sfr_month = tmpMntYrTbl.sfr_month;
但它没有工作,内容也没有被复制

我也试过下面的方法,但也没用

 SELECT COUNT(sfr_month) AS rowval, sfr_month AS Mnth, sfr_responsive_avg AS val, MONTH(sfr_month) AS MnthNo, YEAR(sfr_month) AS YrNo 
FROM tmpTbl 
WHERE sfr_month = mth_str;
SELECT sfr_month AS Mnth, sfr_responsive_avg AS val, MONTH(sfr_month) AS MnthNo, YEAR(sfr_month) AS YrNo 
FROM tmpTbl 
WHERE sfr_month = mth_str LIMIT 1;

SELECT  * FROM tmpMntYrTbl;

 IF  rowval THEN
INSERT INTO tmpMntYrTbl VALUES(val,mth_str);
 ELSE
    INSERT INTO tmpMntYrTbl VALUES(rowval,mth_str);
 END IF;
因此,问题似乎出现在varchar列中,在该列中进行比较并失败。为什么?
有什么线索吗?

使用多表更新:

UPDATE tmpMntYrTbl AS t1,tmpTbl AS t2
SET t1.sfr_value=t2.sfr_responsive_avg
WHERE t1.sfr_month=t2.sfr_month;

谢谢!sbrbot,它成功了:)但我想知道为什么第一个不起作用,更新有什么错/为什么错?如果是你的解决方案,那么确认这个答案为解决方案。但是,更新不起作用,因为在“内部选择”中,您选择了多个记录并希望更新一个记录。
UPDATE tmpMntYrTbl AS t1,tmpTbl AS t2
SET t1.sfr_value=t2.sfr_responsive_avg
WHERE t1.sfr_month=t2.sfr_month;