我想将列从一个表复制到另一个表,当我要复制“ AllInOne”时这不是问题。
我会写:
INSERT INTO table2 SELECT * FROM table1 WHERE condition;
如果我只需要复制部分列,我会写:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ... FROM table1 WHERE condition;
但是
如果我需要复制所有列,但是我需要从$_POST[]
或$_GET[]
获得的具有指定PHP变量的两三列怎么办?
如果我的表中可能只有十列,那么我将“手动”编写它,这是我的第二个示例。但是我的表中有30多个列...
因此,我试图找到一种组合,例如INSERT *
和column2
,column3
。
有什么方法可以做到吗?像这样:
NSERT INTO table2 ( *, Price, Customer) SELECT ( *, '451', 'John')
FROM table1 WHERE condition;
答案 0 :(得分:0)
您很近。只是不要使用括号:
INSERT INTO table2 (column1, column2, . . ., price, customer) -- list all columns here
SELECT t1.*, -- I advise you to list the columns here too
451, 'John'
FROM table1 t1
WHERE condition;
答案 1 :(得分:0)
因此,我试图找到一些可以在其中插入*的组合,例如,还要指定column2,column3
如果我没有误会,那么这实际上实际上是一个SQL问题。如果您的问题是关于在PHP中绑定变量,那是另一回事了,但是从您的问题看来,您已经知道该怎么做。
SQL不支持类似于“ *除这些列之外的所有列”的语法。您只需要列出查询中的每一列。使用INSERT INTO ... SELECT *
不能满足您的要求,并且仍然被认为是不好的做法(例如,如果您稍后从表中删除或添加一列,则将一个查询选择为另一个查询的查询将会中断)
如果表中可能只有十列,那么我将“手动”编写它,这是我的第二个示例。但是我的表中有30多个列...
那真的很糟糕吗?对于有效的代码,这是一笔很小的投资:)