SQL INSERT INTO将来自另一个表的数据与常量相结合

时间:2013-02-27 03:20:40

标签: mysql sql

我正在尝试构建一个表,将来自多个其他表的数据汇集在一起​​。我需要将四条信息带入这个新表(日期,金额,人员,描述)。对于我的一些源表,这很简单,我可以使用:

$example = mysql_query("
INSERT INTO bigtable (Date, Amount, Person, Description)
   SELECT PayDate, Amount, Payee, Description
   FROM Payments
   WHERE Payee=Bob  
");

但对于其中一些,“描述”字段不存在,但可以通过对通过此特定查询添加的所有项使用相同的值来创建。所以问题是这样的:我知道如何使用值插入单个记录,但是如何以编程方式插入一堆记录,以便某些字段从另一个表中动态提取(如上所述),其他字段是我指定的值(例如,来自A流的收入)。我的不完全努力如下。

$combiner3 = mysql_query("
INSERT INTO ".$name."accttemptable (Date, Amount)
SELECT PayDate, Cash 
FROM IncomeStreamA  
");

任何帮助?

1 个答案:

答案 0 :(得分:0)

如果您理解正确,可以使用UNION ALL

INSERT INTO bigtable (`Date`, Amount, Person, Description)
SELECT PayDate, Amount, Payee, Description
  FROM Payments
 WHERE Payee='Bob' 
 UNION ALL
SELECT PayDate, Cash, 'Bob', 'Your description'
  FROM IncomeStreamA
 UNION ALL
SELECT SomeDate, SomeAmount, Firstname, 'Description'
  FROM Table3
...

第二个选择仅是一个示例,并假设来自IncomeStreamA的所有内容都与Bob有关。适当改变它。

您可以使用CASE WHEN随时随地构建不存在的值。例如

SELECT SomDate,
       SomeAmount,
       CASE somecolumn 
           WHEN 1 THEN 'Bob' 
           WHEN 2 THEN 'Jhon' 
           ELSE 'Other'
       END Person, 
       'Your description' Description
 FROM SomeTable

您可以根据需要选择尽可能多的选择来实现目标。