mysql查询可以更新另一个表中的值

8cdiaqws  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(404)

我从未使用过存储过程或函数,只使用了很少的连接函数。
有没有一种方法可以将多个查询存储在一个位置(表、存储过程或存储函数)以更新另一个表中的记录。理想情况下,我希望将这些查询安排为每晚运行。
我的表不断地添加新的记录,link通常为null,但我需要根据一些条件填充它(我已经简化了这个示例)。我使用product和其他一些列来确定链接值是什么。
查询示例:
update table set link='xyz'其中product='x';
update table set link='a'其中product='a'和style='sample';
update table set link='c'其中product='c'和style='sample1';
update table set link='c2'其中product='c'和style='sample2';
一个可能的解决方案是创建第二个表:product='x'=link='xyz'然后我是否可以使用连接来更新我的表?
另外,有没有办法按计划自动运行这些更新?
提前谢谢!希望它有意义,这是我的第一篇文章,长期读者。

ars1skjm

ars1skjm1#

计划查询
创建文本文件,例如。 nightly_update.sql .
将这些查询添加到 nightly_update.sql 一行一行(现在您可以使用 source mysql中的命令: source nightly_update.sql; . 请注意,您应该执行 use your_db_name; 第一个)
在linux上,使用crontab创建定时任务。任务应该是:在指定的时间执行shell脚本。 emacs -nw /etc/crontab ,添加此行: 00 1 * * * root /home/my/mytable_auto_update.sh // every 1:00 am to run this script 编写前面提到的shell脚本。下面是如何在shell脚本中执行sql命令的示例: mysql -u$DB_USER -h$DB_HOST -P$DB_PORT -p$DB_PASS <<\EOF // you don't need an '\' in your code use $DB_NAME; source nightly_update.sql; EOF 重新启动crond sudo service cron restart .
您应该使用某种策略来避免重复的sql语句,例如删除 nightly_update.sql 在你之后 source 然后在新查询到达时创建一个新的查询。
用json更新表
据我所知,你可以借助插件来制作。mysql提供了一个innodb内存缓存插件,为您提供nosql风格的接口。
另外,memorycached插件并不流行,这也不是推荐的方法。如果你对手册感兴趣,请仔细检查一下。

相关问题