MySql varchar字段从两个不同的表中比较`&引用;内容
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,
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;