如何使用查询结果更新我的数据库表

Posted

技术标签:

【中文标题】如何使用查询结果更新我的数据库表【英文标题】:How can I update my database table with the result of my query 【发布时间】:2021-10-25 15:57:20 【问题描述】:

我是一名法国设计师,我遇到了一个 SQL 问题。我的 mysql 服务器在 v5.6 中,我寻求帮助,因为我有语法问题。我想你可以给我一个解决方案。

我有一个名为“分数”的数据库:

id pseudo tempsstage1mili rangstage1
1 pseudo1 20100 ---
2 pseudo2 16900 ---

我向 MySQL 提出这个问题:

SELECT pseudo,
 @curRank := @curRank + 1 AS rank
FROM scores p, (SELECT @curRank := 0) r
ORDER BY  tempsstage1mili;

使用这个命令,MySQL 会返回这个:

pseudo rank
pseudo2 1
pseudo1 2

在这一步它是完美的,但现在,我想用结果更新我的名为“scores”的表。我必须更新的列称为“rangstage1”,列“rank”

我想得到那个:

id pseudo tempsstage1mili rangstage1
1 pseudo1 20100 2
2 pseudo2 16900 1

你能帮我吗?请 ?你是希望!

谢谢!

【问题讨论】:

你要更新什么,哪些字段有哪些值,你能提供预期的结果吗? 感谢您的帮助,我在问题中添加了这个。 您的查询SELECT pseudo, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY tempsstage1mili; 返回pseudo1 | 1 和伪 1 | 2. 不是真的,查询返回:伪2 | (rank) 1 /// 伪 1 | (排名)2 我确实将您的两个查询合二为一,请尝试告诉我它是否有效 【参考方案1】:

你可以把它变成update

SET @curRank = 0;

UPDATE scores
    SET rankstage1 = (@curRank := @curRank + 1)
    ORDER BY tempsstage1mili;

【讨论】:

是的!这个解决方案效果很好!感谢您关注我的问题。你对我的项目帮助很大。 你好,戈登。我现在想将您的解决方案转换为将其插入 php 文件中。我承认我一个人做的不够好。你能帮我吗?【参考方案2】:

经过一些尝试,我认为这会有所帮助:

UPDATE scores s
INNER JOIN 
( select i.pseudo, i.rank from (SELECT pseudo,
@curRank := @curRank + 1 AS rank
FROM scores p, (SELECT @curRank := 0) r
ORDER BY  tempsstage1mili ) i ) a
ON s.pseudo = a.pseudo
SET s.rangstage1 = a.rank ;

请尝试给我反馈,它有效吗?

【讨论】:

下午好 basha04,感谢您关注我的问题。您的解决方案有效,但 Gordon Linoff 的下一个解决方案更短。我会用这个。再次感谢您。 @QuiVoleUnOeuf 很高兴您找到了解决方案。我尝试了两个将两个查询合二为一,这就是它更长的原因。乐于助人 你好 basha04。我刚刚将您的解决方案插入到一个控制数据库的 PHP 文件中,它运行良好。再次感谢您。 @QuiVoleUnOeuf,您可以为可能遇到相同问题的其他人投票

以上是关于如何使用查询结果更新我的数据库表的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql建立临时表的问题(新手入门)

mysql如何合并查询多个相同数据结构库的表输出来结果?

mysql中如何在上一次的查询结果中再次查询

如何使用结果查询更新多个表?

如何通过从数据库中获取表名和列名来更新 Oracle 表?

如何添加我的订阅数据以更新我之前的查询