MYSQL更新行
这里是我非常大的示例表的一个小示例。我试图通过对具有多个sprint的特性进行分组来确定max sprint。在识别它们之后,我想用一个值更新review列 测试表MYSQL更新行,mysql,sql,Mysql,Sql,这里是我非常大的示例表的一个小示例。我试图通过对具有多个sprint的特性进行分组来确定max sprint。在识别它们之后,我想用一个值更新review列 测试表 Feature | Sprint | Review ------------------------------- Code001 | 100 | Code002 | 100 | Code001 | 101 | Code003 | 100 | Code003 |
Feature | Sprint | Review
-------------------------------
Code001 | 100 |
Code002 | 100 |
Code001 | 101 |
Code003 | 100 |
Code003 | 100 |
Code004 | 101 |
Feature | Sprint | Review
-------------------------------
Code001 | 100 |
Code002 | 100 |
Code001 | 101 | Feature File Modified
Code003 | 100 |
Code003 | 100 |
Code004 | 101 |
我的问题是:
SELECT feature, MAX(sprint), review
FROM TEST_TABLE
WHERE feature IN (select feature
from TEST_TABLE
GROUP BY feature
HAVING COUNT(distinct sprint)>1
)
GROUP BY feature
结果:
Feature | Max(sprint)| Review
--------------------------------
Code001 | 101 |
问题:上面的查询选择了正确的结果,但我不知道如何更新review列。在我更新了评论栏之后,我希望我的结果最后看起来像这样
测试表
Feature | Sprint | Review
-------------------------------
Code001 | 100 |
Code002 | 100 |
Code001 | 101 |
Code003 | 100 |
Code003 | 100 |
Code004 | 101 |
Feature | Sprint | Review
-------------------------------
Code001 | 100 |
Code002 | 100 |
Code001 | 101 | Feature File Modified
Code003 | 100 |
Code003 | 100 |
Code004 | 101 |
任何帮助都会很好。提前谢谢 如果要更新所有这些功能,可以使用:
update test_table tt join
(select feature
from TEST_TABLE
group by feature
having count(distinct sprint) > 1
) ttt
on ttt.feature = tt.feature
set tt.review = 'Feature File Modified';
这与你的例子不完全相同。您似乎希望修改除第一个之外的所有内容。我认为是这样的:
update test_table tt join
(select feature , min(sprint) as minsprint
from TEST_TABLE
group by feature
having count(distinct sprint) > 1
) ttt
on tt.feature = ttt.feature and
tt.sprint > ttt.minsprint
set tt.review = 'Feature File Modified';
您的示例查询确实有意义。例如,它使用MAX而不使用groupby。您需要更清楚地了解示例数据和所需结果。而且语法不正确,因为您没有显示任何与更新Review columnSELECT功能MAXsprint相关的代码,从test_20170116中进行回顾,其中test_20170116中的select feature(按COUNTsprint>1的功能分组)中的功能我的问题是如何编写更新以获得最终结果。我被卡住了。上面的查询几乎得到了我想要的。问题是,在我的示例中,sprint可能不仅仅是100和101。如果一个特征有100、101和102。。。当我只更新102时,上面的更新将更新101和102的审阅行。我可以通过修改上面的代码来修复它。这就解决了我的问题:更新TEST_TABLE tt join select特性,通过在tt.feature=ttt.feature和tt.sprint=ttt.maxsprint set tt.review='feature File Modified'上具有countdistinct sprint>1 ttt的特性,从TEST_TABLE组中将maxsprint作为maxsprint更新;