我还在学习 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/