MySQL条件表更新未知列错误1054

时间:2016-07-12 16:24:22

标签: mysql sql

我有两张桌子:

  • Table_A =存储结果
  • Table_B =用于汇总功能

Table_ATable_B共享两个名为IDCYCLE的列,但Table_B包含多次出现的CYCLE。我想计算CYCLETable_B的出现次数并将其存储在Table_A中。例如,如果CYCLE = 42我们有20行具有相同的值,我想计算它(即20)并将其存储在Table_ACYCLE以下CYCLE 1}}将具有相同的值(42),但COUNTTable_A的{​​{1}}列将包含20.这是我到目前为止所拥有的:

CYCLE

我不断获得UPDATE database.Table_A SET count = ( SELECT ID, CYCLE, COUNT(*) FROM database.Table_2 GROUP BY ID, CYCLE ) WHERE database.Table_1.ID = database.Table_2.ID AND database.Table_1.CYCLE = database.Table_2.CYCLE

对我的查询有任何建议吗?

编辑1

Error Code: 1241. Operand should contain 1 column(s)语句返回两列。导致SELECT的原因是什么,但现在已经解决了,我得到了Error Code: 1241

1 个答案:

答案 0 :(得分:1)

这是一个旧的剪切和粘贴,我有一个连接和聚合更新:

根据聚合对另一个表进行更新

create table tA
(   id int auto_increment primary key,
    theDate datetime not null,
    -- other stuff
    key(theDate) -- make it snappy fast
);

create table tB
(   myId int primary key,   -- but definition PK is not null
    someCol int not null
);

-- truncate table tA;
-- truncate table tB;

insert tA(theDate) values
('2015-09-19'),
('2015-09-19 00:24:21'),
('2015-09-19 07:24:21'),
('2015-09-20 00:00:00');

insert tB(myId,someCol) values (15,-1); --    (-1) just for the heck of it
insert tB(myId,someCol) values (16,-1); --    (-1) just for the heck of it

update tB
set someCol=(select count(*) from tA where theDate between '2015-09-19 00:00:00' and '2015-09-19 00:59:59')
where tB.myId=15;

select * from tB;
+------+---------+
| myId | someCol |
+------+---------+
|   15 |       2 |
|   16 |      -1 |
+------+---------+

仅触摸myId = 15。

如果它困扰我的同伴,我会高兴地删除它。事实上,我今天不能删除它,因为我用尽了所有的选票。