如何通过列变量更新列?

huangapple go评论56阅读模式
英文:

How to update a column through a column variable?

问题

我想通过特定的列变量来更新一列。例如,我想创建一个 SQL update 语句 update t1 set col1 = col1 * 3,其中 t1 是一个表,col1 是列名。为了使这个语句生效,需要一个列对象,所以我需要根据名称生成一个列对象。有人知道如何做到这一点吗?如果知道,能分享一些最佳实践吗?

英文:

I want to update a column through a specific column variable. For example, I want to create a SQL update statement update t1 set col1 = col1 * 3, where t1 is a table and col1 is a column name. To make the statement work, a column object is needed, so I need to generate a column object by name. Does anyone know how to do this? If so, can you share some best practices?

答案1

得分: 1

你可以使用元编程。函数 sqlCol 是一个不错的选择。

例如,对于以下的更新任务 t.price = t.price * 3

其中 t 是一张表,price 是一个列,你可以使用以下三种方式:

t1=table(`A`A`B`B as symbol, 2021.04.15 2021.04.16 2021.04.15 2021.04.16 as date, 12 13 21 22 as price)
col="price"
t1[col]=t1[col]*3  //方法 1
t1[col]=expr(sqlCol(col),*,3)  //方法 2
sqlUpdate("t1",sqlColAlias(expr(sqlCol(col),*,3),col)).eval()  //方法 3

注意:方法 1 和方法 2 仅适用于内存中的表格。

英文:

You can use Metaprogramming. The function sqlCol is a good choice.

For example, for the following update job t.price = t.price * 3,

where t is a table and price is a column, you can use the following 3 ways:

t1=table(`A`A`B`B as symbol, 2021.04.15 2021.04.16 2021.04.15 2021.04.16 as date, 12 13 21 22 as price)
col="price"
t1[col]=t1[col]*3  //Method 1
t1[col]=expr(sqlCol(col),*,3)  //Method 2
sqlUpdate("t1",sqlColAlias(expr(sqlCol(col),*,3),col)).eval()  //Method 3

Note: Method 1 and Method 2 are only applicable to in-memory tables.

huangapple
  • 本文由 发表于 2023年5月22日 15:46:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/76303999.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定