MySQL将数据从表行复制到不同表中的另一个表行

标签 mysql

我还在学习 SQL 表,并且一直卡在这上面。 我正在尝试根据两个表的条​​件将数据从另一个表信息复制到表行中。 我的例子如下,因为这是我能想到的正确解释的唯一方法。用户通过表单的方式完成 cs 和 cc 的值(这一切都已完成并正常工作),然后 cp、ca 和 cd 的值应该从其他表信息中填充。

    Table1
    columns =   id    cs      cc     cp     ca     cd
    rows    =    1    Table2  a       ?      ?      ?
                 2    Table3  a       ?      ?      ?

    Table2
    columns =   id    cc      cp      ca     cd     date
    rows    =    1    a        1       2      3      2015-28-04
                 2    a        4       5      6      2015-29-04
                 3    b        7       8      9      2015-28-04
                 4    b        10      11     12     2015-29-04

我需要使用表 2 中第 1 行中的值 1,2 和 3 来填充表 1 的第 1 行中的 cp、ca 和 cd 的值。条件是 table1 第 1 行中 cs 的值等于我们要使用的表的名称,然后 table1 第 1 行中 cc 的值等于该表第 1 行中 cc 的值和今天的日期。

然后我将尝试设置一个 cronjob,以便每天使用新值更新值。

我尝试过使用 INSERT INTO .... SELECT 函数,但它复制的是列而不是数据,我不确定是否可以在我需要的条件下做我想做的事。关于我应该使用什么代码来执行此操作的任何帮助?谢谢。

最佳答案

假设 Table2、Table3 等是一个有限列表(即 Table1.cs 中的表名是一个已知集),那么您要么需要对表单进行多次更新:

UPDATE Table1,Table2 
SET Table1.cp = Table2.cp,
    Table1.ca = Table2.ca,
    Table1.cd = Table2.cd
WHERE Table1.cs = 'Table2' AND Table1.id = Table2.id AND Table1.cc = Table2.cc;

UPDATE Table1,Table3 
SET Table1.cp = Table3.cp,
    Table1.ca = Table3.ca,
    Table1.cd = Table3.cd
WHERE Table1.cs = 'Table3' AND Table1.id = Table3.id AND Table1.cc = Table3.cc;

etc for Table4, Table5 ...

或者如果表名可变且未知,那么您将需要研究使用 mysql 准备语句,这是一个相当复杂的主题。看这里 - https://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

关于MySQL将数据从表行复制到不同表中的另一个表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917299/

相关文章:

mysql - 这个 SQL 查询实际上做了什么?

php - mysql 中存在大量外键?这好吗?

mysql - 查询物理、化学、数学平均分最高的学生id

mysql - NodeJS在启用集群的情况下缓存mysql数据

android - 数据库安卓

php - 如何检索通过链接发送的数据?

php - CAKEPHP 条件或声明

php - 获取mysql中最近记录的组的所有id

mysql - python使用sshtunnel无法连接mysql

mysql - Node.JS 和 MySQL - 查询锁定并且执行速度极其缓慢