在另一个查询中使用一个查询的结果(MySQL)

时间:2014-02-21 16:02:30

标签: mysql

我需要获取其中一个表的子集,然后在另一个查询中使用这些id,这可能吗?

理想情况下,我需要使用此查询的结果:

SELECT id
FROM table
GROUP BY col1, co12
HAVING COUNT(*) > 1

在此查询中:

UPDATE table
SET col1 = CONCAT(col1, '_1')
WHERE id IN (ABOVE_QUERY)

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西:

UPDATE
  table INNER JOIN (SELECT MAX(id) as m_id
                    FROM table
                    GROUP BY col1, co12
                    HAVING COUNT(*) > 1) t1
  ON table.id = t1.m_id
SET col1 = CONCAT(col1, '_1')

在MySQL中,您需要使用JOIN,因为不允许更新子查询中引用的表。而且您可能需要对子查询返回的ID使用聚合函数。