a今天有新问题。。
不知道为什么不起作用,但我正在尝试使用where id in()更新表列。
我得到这个错误:

You can't specify target table 'membre_non_filtrer' for update in FROM clause

这是函数:
UPDATE membre_non_filtrer
SET chef=1 where id IN(
        SELECT tt.id FROM membre_non_filtrer tt INNER JOIN
        (SELECT famid, MAX(age) AS maxAge
        FROM membre_non_filtrer GROUP BY famid)
        groupedtt ON tt.famid = groupedtt.famid
        AND tt.age = groupedtt.maxAge ORDER BY `tt`.`famid` ASC)

只是告诉你,选择工作,并返回一个良好的价值。
知道吗?

最佳答案

一个简单的技巧是将子查询命名为IN(SELECT t.id FROM (subquery) t )

UPDATE membre_non_filtrer
SET chef=1 where id IN(
SELECT t.id FROM
 SELECT tt.id FROM membre_non_filtrer tt INNER JOIN
        (SELECT famid, MAX(age) AS maxAge
        FROM membre_non_filtrer GROUP BY famid)
        groupedtt ON tt.famid = groupedtt.famid
        AND tt.age = groupedtt.maxAge ORDER BY `tt`.`famid` ASC
) t
)

或者你可以使用join
UPDATE
  membre_non_filtrer tt
  INNER JOIN
    (SELECT
      famid,
      MAX(age) AS maxAge
    FROM
      membre_non_filtrer
    GROUP BY famid) groupedtt
    ON tt.famid = groupedtt.famid
    AND tt.age = groupedtt.maxAge
 SET tt.chef = 1

关于mysql - mysql更新问题在哪里id,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25147762/

10-12 12:50
查看更多