0

我正在运行查询以从一个表中选择一组 id,以便我可以使用结果数据集中的数据更新另一个表。

//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 循环中执行此操作,我只是有 echo 以查看 items 变量中的内容。这行得通。我认为要做的事情是在 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 查询的顺序来更新第二个表,然后再次将 id 放在我的第二个表中......根据第一个 SELECT 查询的顺序。

4

3 回答 3

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,您可以通过删除 LIMIT 一次对所有图像执行此操作

于 2012-08-13T18:26:00.250 回答
3

就像是:

UPDATE tbl_updateme SET row_to_update = (SELECT row_you_need from tbl_target WHERE tbl_updateme.comparison_row = tbl_target.comparison_row)
于 2012-08-13T18:30:34.490 回答
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)

或者

简单的方法是创建触发器,在使用动态 SQL 选择后更新表

于 2012-08-13T18:39:19.913 回答