mysql联合返回错误1022—;我怎样才能解决这个问题?
我的天气计划有两个不同的表:降雨量和室外温度 我试试这个:mysql联合返回错误1022—;我怎样才能解决这个问题?,mysql,union,mysql-error-1222,Mysql,Union,Mysql Error 1222,我的天气计划有两个不同的表:降雨量和室外温度 我试试这个: SELECT savetime ,UNIX_TIMESTAMP(savetime) as unixt ,(MAX(counteramount) - MIN(counteramount))*295/1000 as rainc from rainfall union Select savetime ,avg(weatherdata)as temp FROM outside_temp where saveti
SELECT
savetime
,UNIX_TIMESTAMP(savetime) as unixt
,(MAX(counteramount) - MIN(counteramount))*295/1000 as rainc
from rainfall
union
Select
savetime
,avg(weatherdata)as temp
FROM outside_temp
where savetime >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
group by day(savetime)
但要想挽回失败:
#1222-使用的SELECT命令返回不同数量的字段
我没有计划如何解决这个问题
致意
基多联合必须有相同数量的列,所以添加simpo,y alos一个unixtome列,就可以了
SELECT
savetime,
UNIX_TIMESTAMP(savetime) AS unixt,
(MAX(counteramount) - MIN(counteramount)) * 295 / 1000 AS rainc
,''
FROM
rainfall
UNION SELECT
savetime,
UNIX_TIMESTAMP(savetime) AS unixt,
,''
AVG(weatherdata) AS temp
FROM
outside_temp
WHERE
savetime >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
GROUP BY DAY(savetime)
存储时间温度平均温度rainc
:------------------ | ----------------: | -----:
2020-01-31 00:10:00 | 9.011111047532824 | 0.0000
dbfiddle您需要相同数量的列和匹配的数据类型。。如果没有足够的列,请添加空列
SELECT
day(savetime)
,UNIX_TIMESTAMP(savetime) as unixt
,(MAX(counteramount) - MIN(counteramount))*295/1000 as rainc
, null temp
from rainfall
group by day(savetime)
union
Select
day(savetime)
, null
, null
,avg(weatherdata)
FROM outside_temp
where savetime >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
group by day(savetime)
您有2条SELECT语句,您想用它做什么?目标是使用union命令按天、月等查询存储时间rainc temp group请将数据添加为文本,而不是图像。请查看它的工作原理,但我缺少temp get savetime、unixt、raincif您需要的5列在该位置添加简单的
,''
。但是yiu可以玩一点游戏直到你做对为止,老实说,我会加入tbale而不是Union请添加以文本形式发布的数据,join comand已保存到我,但是bith tomes不一样,看看分钟是否合适,然后加入他们不是我期望的…。savetime unixt rainc 2009-07-14 10:38:00 1247560680 11463.405000000看看这个问题,一切都是文本,也都是想要的结果。我还是不知道你想要什么
CREATE TABLE rainfall (
`savetime` VARCHAR(34),
`raincounter` INTEGER,
`counteramount` INTEGER,
`israining` INTEGER,
`newflag` INTEGER
);
INSERT INTO rainfall
(`savetime`, `raincounter`, `counteramount`, `israining`, `newflag`)
VALUES
('2020-01-31 09:10:00', '2016', '37290', '0', '1'),
('2020-01-31 16:56:00', '2016', '37290', '0', '1'),
('2020-01-31 07:40:00', '2016', '37290', '0', '1'),
('2020-01-31 05:10:00', '2016', '37290', '0', '1'),
('2020-01-31 11:11:00', '2016', '37290', '0', '1'),
('2020-01-31 15:11:00', '2016', '37290', '0', '1'),
('2020-01-31 20:56:00', '2016', '37290', '0', '1'),
('2020-01-31 11:41:00', '2016', '37290', '0', '1'),
('2020-01-31 08:55:00', '2016', '37290', '0', '1'),
('2020-01-31 15:41:00', '2016', '37290', '0', '1'),
('2020-01-31 12:11:00', '2016', '37290', '0', '1');
SELECT
savetime_temp
,AVG_temp
,rainc
FROM
(SELECT
DATE(savetime) DAY_temp
,MIN(savetime) savetime_temp
,AVG(weatherdata) AS AVG_temp
FROM
outside_temp
WHERE
savetime >= DATE_SUB(CURDATE(), INTERVAL 360 DAY)
GROUP BY DAte(savetime)) t1
INNER JOIN
(SELECT
DATE(savetime) DAY_rainc
,MIN(savetime) savetime_rainc
,(MAX(counteramount) - MIN(counteramount)) * 295 / 1000 AS rainc
FROM
rainfall
GROUP BY DAte(savetime)) t2
ON t1.DAY_temp = t2.DAY_rainc
savetime_temp | AVG_temp | rainc
:------------------ | ----------------: | -----:
2020-01-31 00:10:00 | 9.011111047532824 | 0.0000
SELECT
day(savetime)
,UNIX_TIMESTAMP(savetime) as unixt
,(MAX(counteramount) - MIN(counteramount))*295/1000 as rainc
, null temp
from rainfall
group by day(savetime)
union
Select
day(savetime)
, null
, null
,avg(weatherdata)
FROM outside_temp
where savetime >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
group by day(savetime)