【问题标题】:mysql create a column using a variablemysql使用变量创建列
【发布时间】:2014-03-17 15:43:55
【问题描述】:

我的想法是这样的'使用sql变量'

注意:id不是PK

1st query   `select @newvalues :=   (id - coalesce((select sum(minus) from tbl_name t2 where t2.id < t.id), 0)) from tbl_name t;` 

2nd query.  `update tbl_name set ab = @newvalues;` 

即使它只是一个“选择查询变量”,我可以得到所有的@newvalues 行吗?因为目前我只能得到它的最后一个值,即 5。

    @newvalues          ID *not Primary key

     9 |  ----------->  9 |              
     8 |  ----------->  8 | 
     7 |  ----------->  7 | 
     6 |  ----------->  6 | 
     5 |  ----------->  5 | 
                   *transfer the row values of @newvalues to the column ID.

【问题讨论】:

  • 请任何 cmets/ 帮助。我真的很感激
  • php专家,请帮忙。新手在这里。
  • 我会推荐一个名为superNewID 的新列并运行UPDATE table set superNewID=(newID-minus) where id=id。完成此操作后,删除 ID 列并将 superNewID 重命名为 ID
  • 你能解释一下你想在这里做什么吗? ID 是这个表的主键吗?从表面上看,这似乎是一种糟糕的方法。
  • 也别再乞求了,它会让人们想删除你的问题而不是帮助你。当我看到你的 cmets 进来时,我犹豫着说什么

标签: php mysql variables for-loop sql-update


【解决方案1】:

首先,您需要将该行放入一个数组中以便循环遍历它。为此执行查询并将结果存储在变量中,然后我们将使用 mysqli_fetch_array() 函数将查询转换为数组。

$idQuery = "SELECT * FROM table";
$idResult = mysqli_query(/*your database connection*/, $idQuery);

现在循环。

while ($row = mysqli_fetch_array($idResult)) { 
$query = "UPDATE table SET ID = NewId WHERE id = " . $row['id'];
mysqli_query(/*your database connection*/, $query); }

这应该可行。

【讨论】:

  • 我还在想办法,谢谢 nick。稍后更新您
  • 好的,让我知道这个解决方案是否有效。如果没有,我会进一步研究。
  • 我只是编辑我上面的代码以获得更好的说明,
  • 请看一下这个网页上面代码的最后一部分,从“我的想法是这样的”开始
  • 对不起,我恐怕没有你的答案。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2015-06-20
  • 1970-01-01
  • 2013-03-25
  • 2018-11-04
相关资源
最近更新 更多