我知道这个问题太长了,但我说的不够简单。所以这是我的情况:
我想在mysql中的同一个表中选择两行或更多行,其中一个字段具有相同的值,但在另一个字段中会有所不同。
示例:
mainthread | category
1234 1
1234 1
1234 3
1234 3
5643 4
4322 6
3123 9
现在我希望当它们具有相同的主线程值时,所有类别1将更新为3。我想要更改的类别总是从1到3.这是主要的线程会有所不同,因为有数千个不同的主线程
答案 0 :(得分:0)
也许我误解了这个问题,但事实并非如此:
Update mytable
Set category = 3
Where mainthread = 1234
答案 1 :(得分: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
(你的问题并不完全清楚你要完成什么。)