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

时间:2015-04-28 10:48:06

标签: 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

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

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

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

1 个答案:

答案 0 :(得分:0)

假设Table2,Table3等是一个有限列表(IE,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 Prepared Statements,这是一个相当复杂的主题。见这里 - https://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html