英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论