Mysql:在一个表中更新记录,其中n:m关系中只有一个引用

时间:2015-01-16 11:46:19

标签: mysql

我有表 fruits 蔬菜 fruits_vegetables 。我必须更新那些只有一个相关蔬菜记录的 fruits 记录。

fruits_vegetables 加入 fruits 并按 fruits.id 分组并计数时,结果将无法更新为查询的查询结果包含组语句的内容不可更新。

所以现在我在phpmyadmin中做了这个测试:

SELECT 
fruits.*,
(SELECT count(*)
   FROM fruits_vegetables fv 
   WHERE fv.fruit_id=f.id) AS rel_count
FROM fruits f
HAVING rel_count = 1

似乎与count(*)聚合仍然会阻止查询结果可更新。

是否有其他方法可以更新与一个蔬菜记录有关系的 fruits 记录?

1 个答案:

答案 0 :(得分:0)

您需要join结果:

update fruits f join 
       (select fv.fruit_id, count(*) as cnt
        from fruits_vegetables fv
        group by fruit_id
        having count(*) = 1
       ) fv
       on fv.fruit_id = f.id
    set f.isUnique = 1; -- Or whatever you want to set

我假设“一个蔬菜记录”的意思是“fruits_vegetables中的一条记录,这是示例代码建议的。