gpt4 book ai didi

mysql - 将多个表中的值相乘 MySQL

转载 作者:行者123 更新时间:2023-11-29 08:28:53 26 4
gpt4 key购买 nike

我正在使用 mySql 5.1。我遇到麻烦了。下面的查询运行完美。我想用数据库中相对应的 SID 的值替换常量值 100。但我不知道该怎么做。

INSERT INTO ResultTable(SID,Date,Result) 
SELECT SID,DATE(`Time`),(MAX(SValue)-MIN(SValue))* 100
FROM table1
GROUP BY Date(`Time`),SID;


Table 1
------------------------------------------
SID Time SValue
------------------------------------------
7 2013-05-06 12:06:17 5668
8 2013-04-10 16:17:49 11434.9
8 2013-04-10 16:18:54 11435.5
7 2013-04-10 16:21:04 11436.8
7 2013-04-10 16:22:09 11437.4
8 2013-04-10 16:25:24 11439.2


Table2
---------------------
SID EValue
---------------------
7 10
8 100


Result Table
------------------------------------------
SID Date Result
------------------------------------------
7 2013-05-06 56680
8 2013-04-10 1143490
8 2013-04-10 1143550
7 2013-04-10 114368
7 2013-04-10 114374
8 2013-04-10 1143920

现有查询:

    SELECT SID,DATE(`Time`),(MAX(SValue)-MIN(SValue))* 100 
FROM table1
GROUP BY Date(`Time`),SID;

我的查询:

      select (h1.EValue * ss.SValue) AS Emission 
from Table2 h1
inner join (
select SID, (MAX(SValue)-MIN(SValue)) AS SValue
from Table1
group by Date(`Time`), SID
) ss on h1.SID = ss.SID

但是我的查询给出了一些额外的值。我的问题是

  1. 我在这里做错了什么?

  2. 为什么会有额外的值(value)?

  3. 有更好的方法吗?

任何帮助将不胜感激..

最佳答案

我认为这就是您正在寻找的。我只是加入到 table2 并从那里获取 EValue 并替换 100。

SELECT  h1.SID, DATE(`Tm`), 
(MAX(SValue)-MIN(SValue))* ss.EValue

FROM table1 as h1

JOIN table2 as ss
ON h1.SID = ss.SID

GROUP BY Date(`Tm`), h1.SID;

我认为您获得“额外”值的原因是您在子查询中按日期和 SID 进行分组,但没有在主查询中显示日期。因此,您将获得具有不同日期的 SID 的多个结果。

关于mysql - 将多个表中的值相乘 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com