【问题标题】: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
  • 我确实将您的两个查询合二为一,请尝试告诉我它是否有效

标签: mysql sql datatable mysql-5.6


【解决方案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,您可以为可能遇到相同问题的其他人投票
猜你喜欢
  • 2015-11-20
  • 2021-10-18
  • 1970-01-01
  • 2013-10-24
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多