mysql - SQL插入不存在的地方以防止主键问题

标签 mysql sql casting insert

我有两个表,一个包含每小时数据,另一个包含该数据的每日总和,我遇到了重复条目主键问题,所以我正在尝试执行类似“不存在”的操作,但我也需要允许当前日期(今天)全天继续添加。

现在我正在尝试以下操作:

insert into dailybtuTEST 
SELECT cast(DT as date), SUM(case when `BoilerBTUhr` > 0 then `BoilerBTUhr` else 0 end)/1000000 as BoilerBTU, SUM(case when `InfloorBTUhr` > 0 then `InfloorBTUhr` else 0 end)/1000000 as InfloorBTU, SUM(case when `BufferBTUhr` > 0 then `BufferBTUhr` else 0 end)/1000000 as BufferBTU FROM table_solarhrTEST
where not exists (select 1 from dailybtuTEST where DT = table_solarhrTEST.DT);

并且我收到重复条目主键错误(DT 在 dailybtuTEST 上是主要的,并且任意记录号在 table_solarhrTEST 上是主要的 - 我尝试过联接、不存在的联接等,但我一生都做不到即使通过挖掘 stackoverflow 线程也能解决这个问题。

请帮忙?

最佳答案

试试这个:

insert into dailybtuTEST 
SELECT cast(DT as date), SUM(case when `BoilerBTUhr` > 0 then `BoilerBTUhr` else 0 end)/1000000 as BoilerBTU, SUM(case when `InfloorBTUhr` > 0 then `InfloorBTUhr` else 0 end)/1000000 as InfloorBTU, SUM(case when `BufferBTUhr` > 0 then `BufferBTUhr` else 0 end)/1000000 as BufferBTU
FROM table_solarhrTEST s
LEFT JOIN dailybtuTEST d ON d.DT = s.DT
WHERE d.DT IS NULL

关于mysql - SQL插入不存在的地方以防止主键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299621/

相关文章:

java - 将空值 JTextFormatted 插入双列到 mysql

mysql join日期记录失败,可见where子句

c# - 隐式转换为 Func 或 Action 委托(delegate)?

mysql - Codeigniter order_by 与 CONVERT

mysql - 我对 UNION ALL 感到摸不着头脑

php - 在 php 中对相同的学生进行排名

mysql - SQL 按另一列选择具有最新日期时间组的行

sql - Postgres 使用 JSONB 列而不是定义的列

c# - 将对象转换为 IEnumerable

c++ - 有效的无符号到有符号转换避免实现定义的行为