今天有一个新问题..
不知道为什么它不起作用,但我正在尝试使用 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)
只是告诉您 SELECT 有效并返回了一个很好的值。
有什么想法吗?
最佳答案
一个快速的技巧是为您的子查询设置别名,例如 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
)
或者你可以使用加入
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更新问题,其中id在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25147762/