mysql - SQL更新自动化

标签 mysql sql phpmyadmin

我有一个 UPDATE 语句形式的查询。假设它是电子邮件事件的打开率,在此示例中,城市是伦敦。

我想每月对 80 个城市运行此查询,并将结果显示在 2018_Cities 表中。有没有办法让我自动执行此操作,这样我就不必每个月都输入所有城市?

不要觉得有义务提供代码,如果您愿意,您可以指出流程的方向,我可以进行调查,但我正在努力寻找要问 Google 的词!

UPDATE 2018_Cities SET openRate = (
SELECT ROUND((
SELECT (
SELECT COALESCE( SUM(opens),0) 
FROM 0118
WHERE siteshort 
IN('London')) + (
SELECT COALESCE( SUM(opens),0) 
FROM 0218
WHERE siteshort 
IN('London')) 
as result) / 
(SELECT (
SELECT COALESCE( SUM(recipients),0) 
FROM 0118
WHERE siteshort 
IN('London')) + (
SELECT COALESCE( SUM(recipients),0) 
FROM 0218
WHERE siteshort 
IN('London')) 
as result) * 100, 1)) WHERE siteshort = ('London');

最佳答案

大概,你想要这样的东西:

UPDATE 2018_Cities c JOIN
       (SELECT siteshort, SUM(opens) / NULLIF(SUM(RECIPIENTS), 0) as new_openrate
        FROM `0118` t
        GROUP BY siteshort
       ) t
       ON c.siteshort = t.siteshort
    SET c.openRate = new_openrate;

你的逻辑很难理解,但思路是一样的。编写一个子查询来生成计算。然后使用 JOIN 引入新值。

请注意,0118 是一个荒谬的表名。您应该修复数据模型中的名称。

关于mysql - SQL更新自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49255718/

相关文章:

php - 登录 phpmyadmin 时出错?

php - 状态不发回到表单上?

mysql - 使用sequelize从使用自动增量id迁移到uuid

php - 错误: Unknown column 'x' in 'field list'

javascript - 如何在 javascript 中调用 pl/sql 程序和函数?

SQL 语句排序 nvarchar

mysql - 如何统计从现在开始的 5 分钟内在单个查询中插入了多少条记录?

mysql - 安装 MySQLdb python 2.7 64 位

sql - 只查找另一列中只有 NULL 的 id

使用 group_start 进行 MySQL 查询 - CodeIgniter Active Record