将值分配给sql查询中的列

时间:2015-09-21 06:16:48

标签: php mysql

我有2个表,我需要的是从table1中选择一些列并复制table2中的那些列。我尝试了很多选择但没有任何对我有用。我是php和mysql领域的初学者。这些是我先试过的东西。

 `$sql = " UPDATE table1 JOIN table2 ON  table1.primary_key = 
table2.primary_key  SET table1.column1= table2.column1 , table1.column2= 
table2.column2  WHERE table1.primary_key = 1  ";

`$sql= "update table1 set table1.column1 = 
table2.column1  FROM table1 INNER JOIN  
            table2 on table1.primary_key = 
 table2.primary_key WHERE table2.primary_key= 1 ";

由于两者都不起作用的原因,我尝试了另一种方法:

              $sql= "SELECT column1,column2FROM table2 WHERE primary_key=1";
              $result = mysql_query($sql);
              $row = mysql_fetch_array($result);`
              $UpdateQuery ="UPDATE  table1 SET column1=$row[column1] ,column2=$row[column2] WHERE primary_key= 1";
                mysql_query($UpdateQuery);

这也是一个错误。任何人都可以告诉我如何从sql查询或其他方法中分配列值以满足我的需要。

2 个答案:

答案 0 :(得分:0)

一种选择是在JOIN期间在SQL查询中使用UPDATE

UPDATE table1 t1
JOIN
(
    SELECT * FROM table2
    WHERE table2.primary_key = 1
) t2
ON t1.primary_key = t2.primary_key
SET t1.column1 = t2.column1

我会留给您将其插入到您的PHP代码中,因为原始问题中没有这么多细节。

答案 1 :(得分:0)

如果要从其他表插入数据,可以使用mysql提供的insert ... select语句。 试试这样:

INSERT INTO table1 (table1.column1,table1.column2) 
SELECT table2.column1,table2.column from table2
WHERE table1.primary_key = 1 
ON DUPLICATE KEY UPDATE table1.column1= table2.column1 , table1.column2= 
table2.column2

有关详细信息,请参阅:http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html