将唯一行移动到临时表的mysql查询
我想创建一个查询,将每个唯一条目从一个表移动到另一个临时表。 我创建了以下查询以获取唯一入口:将唯一行移动到临时表的mysql查询,mysql,Mysql,我想创建一个查询,将每个唯一条目从一个表移动到另一个临时表。 我创建了以下查询以获取唯一入口: select date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber from topcampaigns_HOUR group by date, messageType, zCampaignId, isSenderPolicy, sender, rec
select date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber
from topcampaigns_HOUR
group by date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber
having count(*) = 1;
它会返回很多结果:
/* Affected rows: 0 Found rows: 473 Warnings: 0 Duration for 1 query: 0.000 sec. (+ 0.016 sec. network) */
但是,当我将其放入更新中时,我似乎无法更新tmp表:
UPDATE topcampaigns_HOUR_tmp as b
INNER JOIN (
select date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber
from topcampaigns_HOUR
group by date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber
having count(*) = 1) as a
SET
b.date=a.date,
b.messageType=a.messageType,
b.zCampaignId=a.zCampaignId,
b.isSenderPolicy=a.isSenderPolicy,
b.sender=a.sender,
b.recipient=a.recipient,
b.policy=a.policy,
b.operator=a.operator,
b.country=a.country,
b.zNumber=a.zNumber;
这导致:
/* Affected rows: 0 Found rows: 0 Warnings: 0 Duration for 1 query: 00:04:25 */
我尝试了很多方法,比如使用:
UPDATE topcampaigns_HOUR_tmp JOIN (select date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber from topcampaigns_HOUR group by date, messageType, zCampaignId, isSenderPolicy, sender, recipient, policy, operator, country, zNumber having count(*) = 1) a SET
topcampaigns_HOUR_tmp.date=a.date,
topcampaigns_HOUR_tmp.messageType=a.messageType,
topcampaigns_HOUR_tmp.zCampaignId=a.zCampaignId,
topcampaigns_HOUR_tmp.isSenderPolicy=a.isSenderPolicy,
topcampaigns_HOUR_tmp.sender=a.sender,
topcampaigns_HOUR_tmp.recipient=a.recipient,
topcampaigns_HOUR_tmp.policy=a.policy,
topcampaigns_HOUR_tmp.operator=a.operator,
topcampaigns_HOUR_tmp.country=a.country,
topcampaigns_HOUR_tmp.zNumber=a.zNumber;
我再次得到:
/* Affected rows: 0 Found rows: 0 Warnings: 0 Duration for 1 query: 00:03:42 */
topcampaigns\u HOUR\u tmp表似乎从未更新过
我做错了什么
A如果要添加行,则需要插入,如果要从查询结果中添加行,则需要插入。试着这样做:
INSERT INTO topcampaigns_HOUR_tmp (
date, messageType, zCampaignId, isSenderPolicy, sender,
recipient, policy, operator, country, zNumber)
select
date, messageType, zCampaignId, isSenderPolicy, sender,
recipient, policy, operator, country, zNumber
from topcampaigns_HOUR
group by
date, messageType, zCampaignId, isSenderPolicy, sender,
recipient, policy, operator, country, zNumber
having count(*) = 1
为什么不插入…选择?e、 g.
插入到可诱惑的SELECT*中,按DUP=1的字段从表组中计数(*)DUP