2014-10-27 42 views
-1

學校插入值

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

school_images

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

...

需要插入值到只有在學校的the_photo列照片值= 1這樣的學校圖片:

學校

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

是否有可寫的所有行做一個簡單的查詢?對於一行,我知道如何插入它,但我怎麼能自動惰性多行。

+0

插入或更新另一個表中的值? – gvgvgvijayan 2014-10-27 12:56:06

+0

你爲什麼需要這樣做? – Strawberry 2014-10-27 12:56:51

+0

@gvgvgvijayan - 在學校插入價值 – NoviceMe 2014-10-27 12:59:47

回答

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

這可能是你正在尋找的:SELECT INTO。 從鏈接摘自:

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

當心!只有當您想要在新插入時執行上述請求的操作時,此答案纔有用。否則,你將需要一個不同的策略

,你應該有這樣的事情:

  1. school_images選擇所有值,那麼的foreach他們:

    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)

  • ,如果你沒有的話,那麼執行正常插入像你這樣的吧。
  • 0

    您也可以使用inner join來實現這一點。

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

    您應該使用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