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