1

我知道这个问题太长了,但我不能简单地描述它。所以这是我的情况:

我想在 mysql 的同一个表中选择两行或多行,其中一个字段具有相同的值,但在另一个字段上会有所不同。

例子:

mainthread |  category

1234             1
1234             1
1234             3
1234             3
5643             4
4322             6
3123             9

现在我希望当它们具有相同的主线程值时,1 的所有类别都将更新为 3。我要更改的类别始终是从 1 到 3。主线程会有所不同,因为有成千上万个不同的主线程

4

2 回答 2

0

如果要更新表,将 的值设置为category在具有相同值的所有行上相同mainthread,然后

UPDATE mytable t
  JOIN ( SELECT mainthread
              , MAX(category) AS max_category
           FROM mytable
          GROUP BY mainthread
       ) s
    ON s.mainthread = t.mainthread
  SET t.category = s.max_category

如果您只想返回具有相同主线程值和两个或多个不同类别值的行,那么:

SELECT t.*
  FROM mainthread t
  JOIN ( SELECT mainthread
           FROM mytable
          GROUP BY mainthread
         HAVING COUNT(DISTINCT category) > 1
       ) s
    ON s.mainthread = t.mainthread
 ORDER
    BY t.mainthread
     , t.category

(您的问题并不完全清楚您要完成什么。)

于 2013-04-17T01:20:33.193 回答
0

也许我误解了这个问题,但这不仅仅是:

Update mytable
Set category = 3
Where mainthread = 1234
于 2013-04-17T01:16:40.277 回答