更新时MySQL选择

时间:2011-07-28 20:33:50

标签: mysql select while-loop

我写了一个查询,我确信它是正确的形式。 但是我收到了一个错误。 :) 我可以这样查询吗?

UPDATE pages SET 
    p_name = 'Activites', 
    p_active = 1, 
    p_parent = 'sport', 
    p_parent_id=(
    SELECT p_id FROM pages WHERE p_link='sport' LIMIT 1
    ), 
    p_link = 'activites' 
    WHERE p_id = 9;

谢谢。

1 个答案:

答案 0 :(得分:3)

你不能这样做。您需要交叉连接表和子查询:

UPDATE 
  pages AS p
CROSS JOIN (
  SELECT p_id FROM pages WHERE p_link='sport' LIMIT 1
) AS sq
SET 
  p.p_name = 'Activites', 
  p.p_active = 1, 
  p.p_parent = 'sport', 
  p.p.parent_id= sq.p_id 
  p.p_link = 'activites' 
WHERE p.p_id = 9;