Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql联合返回错误1022—;我怎样才能解决这个问题?_Mysql_Union_Mysql Error 1222 - Fatal编程技术网

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)