在另一个表mysql的一列中插入值


Inserting value in one column from another table mysql

学校

+-----+-----------+----------+
| id  | the_photo | column3  |
+-----+-----------+----------+
| 11  |     NULL  |     abc  |
| 22  |     NULL  |     asf  |
| 33  |     NULL  |     asag |
+-----+-----------+----------+

学校图像

+-----+-----------+-------+    
| id  | school_id | photo |
+-----+-----------+-------+
| 1   | 11        |  1    |
| 2   | 22        |  0    |
| 3   | 33        |  1    |
+-----+-----------+-------+

只有当学校图像的照片值=1时,才需要将值插入学校的_photo列:

学校

+-----+-----------+
| id  | the_photo |
+-----+-----------+
| 11  |     1     |
| 22  |     NULL  |
| 33  |     3     |
+-----+-----------+

是否有一个简单的查询可以为所有行编写?对于一行,我知道如何插入它,但如何对多行自动惰性。

这可能就是您想要的:SELECT INTO。取自链接:

INSERT INTO tbl_temp2 (fld_id)
    SELECT tbl_temp1.fld_order_id
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

小心 只有当您想在新插入时执行上述请求的操作时,此答案才有效。否则,您将需要不同的策略

你应该有这样的东西:

  1. school_images中选择所有值,然后对其进行预处理:

    foreach($result as $res) { if($res['photo'] == 1) { // see step 2 } else { // see step 3 } }

  2. 如果你在school_photos中的值为1,那么:

INSERT INTO school (the_photo, colum3) VALUES ($res['id'], $some_value)

  1. 如果没有,那么像现在一样执行正常插入

您也可以使用内部联接来实现这一点。

 Update School inner join school_images on School.id = school_images.school_id and photo=1
set the_photo = school_images.id ;

您应该使用INNER JOIN将schoolschool_images:连接起来

UPDATE
  school INNER JOIN school_images
  ON school.id = school_images.school_id
     AND school_images.photo=1
SET
  school.the_photo=school_images.id
UPDATE school AS s, school_images AS si SET s.the_photo = si.id WHERE s.id = si.school_id AND si.photo = 1;