如何解决mysql union找回错误1022-我该如何解决?
我的天气计划有两个不同的表,降雨量和外部温度。
我试试这个:
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命令返回不同数量的字段
我没有计划如何解决此问题...
最好的问候 基多
解决方法
UNION的列数必须相同,因此在unixtome列中添加simpo就可以了
querydsl-mongodb
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)
CREATE TABLE outside_temp ( `savetime` DATETIME,`weatherdata` FLOAT,`newflag` INTEGER ); INSERT INTO outside_temp (`savetime`,`weatherdata`,`newflag`) VALUES ('2020-01-31 01:10:00','8.9','1'),('2020-01-31 03:25:00',('2020-01-31 05:40:00','9.1',('2020-01-31 00:10:00','8.8',('2020-01-31 04:25:00','9.3',('2020-01-31 00:55:00','9',('2020-01-31 01:25:00',('2020-01-31 00:25:00',('2020-01-31 04:10:00','1');
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',('2020-01-31 16:56:00',('2020-01-31 07:40:00',('2020-01-31 05:10:00',('2020-01-31 11:11:00',('2020-01-31 15:11:00',('2020-01-31 20:56:00',('2020-01-31 11:41:00',('2020-01-31 08:55:00',('2020-01-31 15:41:00',('2020-01-31 12:11:00','1');
savetime_temp | AVG_temp | rainc :------------------ | ----------------: | -----: 2020-01-31 00:10:00 | 9.011111047532824 | 0.0000
db 提琴here
,您需要相同数量的列和匹配的数据类型..如果没有足够的列,则添加空列
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,avg(weatherdata)
FROM outside_temp
where savetime >= DATE_SUB(CURDATE(),INTERVAL 90 DAY)
group by day(savetime)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。