使用不同表中某行的值更新整行(cake / mysql)

时间:2011-04-08 17:57:01

标签: mysql cakephp

目前我使用这样的查询从名为admin cats的表中更新名为cats的表($ id是因为它在蛋糕中,它只是1,2,3等数字)。因为它是我为每个领域命名(可能有50个)并且这样说:

update cats AS c, admin_cats set c.category=(select category from admin_cats where id=$id), [--removed 50 columns in the middle--] c.overviewImageText8=(select overviewImageText8 from admin_cats where id=$id) where c.id = $id");

我正在更新每一栏,所以有一种方法可以说:

UPDATE cats SET * = SELECT * FROM admin_cats WHERE admin_cats.id = $id) WHERE cats.id IN ($id);

当然我尝试了它并且它不起作用,但我想这样做,其中id匹配$ id的猫行将使用具有相同id的admin_cats中的值进行更新。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

对于MySQL,请使用REPLACE

REPLACE cats (<optional columns>)
SELECT <cols> 
FROM admin_cats
WHERE admin_cats.id = $id;

注意:这假设猫有一个主键(例如cats.id),可以捕获重复行错误,并替换行。

注意:其他数据库不支持替换或使用其他类似但不同的语法。