2012-08-13 66 views
0

我正在運行一個查詢來從一個表中選擇一個id的數組,以便我可以用生成的數據集中的數據更新另一個表。選擇並更新mysql相同的查詢

//db query result 
$query = "SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25"; 
$query_execute = mysql_query($query); 
mysql_close($db_config); 

while ($items = mysql_fetch_array($query_execute)) { 
echo $items['image_id']; 
echo '<br/>'; 
} 

我想我需要在while循環中做,我只是有回聲看看有什麼在項目變量。這很好。我認爲要做的事情是在while循環中。我想用另一個表的實際更新SET查詢替換「回顯」。像...

while ($items = mysql_fetch_array($query_execute)) { 
$q = "UPDATE jx_gallery_images_ratings SET image_id ='".$items.""; 
mysql_query($q); 

但新表沒有數據。有沒有更好的方式來寫這個...也許甚至作爲一個查詢或什麼?任何幫助表示讚賞。

編輯:我應該更好地解釋一下。該表是空的,我可以繼續使用從一個表到另一個表的插入,以獲得該ID在那裏。然而,在那之後......在某種程度上它有點「臨時」表。但不是真的。無論我在第一個表的SELECT查詢中創建的image_id的排序如何(例如,還有其他行要按照image_id排序,比如'hits')...所以第二個表需要使用相同的順序進行更新image_id的。可能是用cron工作幾次運行這個小片段。所以,是的,我試圖用第一個表的SELECT查詢的順序來更新第二個表,然後再根據第一個SELECT查詢的順序再次將該ID放在第二個表中。

+0

我認爲你需要插入和不更新? – 2012-08-13 18:22:57

回答

4

如果表格爲空,則應該執行插入操作。你可以做到這一點在這樣一個查詢:

INSERT INTO jx_gallery_images_ratings (image_id) 
SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25 

請注意,你可能不會真的需要ORDER BY,ADN你可以通過刪除LIMIT

+0

嗯,我確實發現了另一個與此無關的solutuion,但這非常有幫助。謝謝,Mike – decaye 2012-08-14 16:03:14

3

事情做一次性爲所有圖片像:

UPDATE tbl_updateme SET row_to_update = (SELECT row_you_need from tbl_target WHERE tbl_updateme.comparison_row = tbl_target.comparison_row) 
+0

這對我有效:D,謝謝 – TheSnooker 2013-06-20 15:21:00

0
INSERT INTO jx_gallery_images_ratings (image_id) (SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25) 

或者

容易的方法是創建觸發器,且s後更新表與動態SQL選舉