mysql - 如何选择 - 更新然后将值复制到另一个表(批量)

标签 mysql

我正在为我正在使用的邮件软件开发一个短链接系统, 我有 2 张 table :

Table1 : t1_id, t1_campaign_id, t1_email_address, t1_email_text, t1_url
Table2 : t2_id, t2_code, t2_status

我正在做的是通过 cronjob 在 Table2 中生成短代码,所以我有超过 2M 的记录, 当我想发送一封新电子邮件时,系统会用除 t1_url 之外的所有数据填充 Table1。

我想要一个将 1 t2_code 复制到 t1_url 并将 t2_status 更改为“1”的查询, t2_code 应该使用一次,并且我不能使用 t1_id = t2_id 条件,因为有些电子邮件不包含短链接。

我可以使用 PHP 循环轻松实现此目的,但我在这里处理大数字,并且我想要快速的东西。

所以,我想要实现的是:

1 - SELECT t2_code FROM Table2 WHERE t2_status = '0';
2 - UPDATE Table2 SET t2_status = '1' WHERE t2_code = "[RETURNED VALUES FROM FIRST QUERY]"
3 - UPDATE Table1 SET t1_url = '[RETURNED VALUES FROM FIRST QUERY]' WHERE t1_campaign_id = '[Example: 1]'

示例:

- TABLE1
t1_id, t1_campaign_id, t1_email_address, t1_email_text, t1_url
'217', '327', 'john@gmail.com', 'Hello How are you doing?', ''
'218', '327', 'doe@gmail.com', 'Hello How are you doing?', ''
'219', '327', 'esys@gmail.com', 'Hello How are you doing?', ''

- TABLE2
t2_id, t2_code, t2_status
'2627', 'GtSu75s', '0'
'2628', 'TY8usk2', '0'
'2629', 'HDY2i9z', '1'
'2630', 'JEYSO6s', '0'
'2630', 'KjdU8n1', '1'
'2631', 'KSYZnc8', '0'
'2632', 'jd6sjc8', '0'

我想要的结果:

- TABLE1
t1_id, t1_campaign_id, t1_email_address, t1_email_text, t1_url
'217', '327', 'john@gmail.com', 'Hello How are you doing?', 'GtSu75s'
'218', '327', 'doe@gmail.com', 'Hello How are you doing?', 'TY8usk2'
'219', '327', 'esys@gmail.com', 'Hello How are you doing?', 'JEYSO6s'

- TABLE2
t2_id, t2_code, t2_status
'2627', 'GtSu75s', '1'
'2628', 'TY8usk2', '1'
'2629', 'HDY2i9z', '1'
'2630', 'JEYSO6s', '1'
'2630', 'KjdU8n1', '1'
'2631', 'KSYZnc8', '0'
'2632', 'jd6sjc8', '0'

任何人都可以快速提出查询或方法吗?

谢谢。

最佳答案

UPDATE Table2 SET t2_status = '1' WHERE t2_code in (SELECT t2_code FROM Table2 WHERE t2_status = '0');

我想你需要这样的东西。同样的情况也适用于第二个更新语句。

关于mysql - 如何选择 - 更新然后将值复制到另一个表(批量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704459/

相关文章:

java - 如何将 DATE 保存在 MySQL 列

php - 如何在php、mysql中制作多级菜单?

mysql - 选择 Null 语句,这可能吗?

mysql - LIMIT 是在 JOIN 之前还是之后生效?

mysql - MySQL查询中的复杂算法

PHP - 来自 HTML 表单的未定义索引 - 显示为 NULL

MySQL - 如果不存在则创建用户

php - 在 Mysql 中对行进行分组和排名

mysql - Centos 7 , WHM 高 Mysql&MariaDB CPU 使用率 %600

php - SQL查询根据年和月选择数据