0

我正在执行以下查询(测试表):

select * from users order by id;
{"id":1,"firstname":"David","lastname":"Morrison","age":25,"income":100000}
{"id":2,"firstname":"John","lastname":"Anderson","age":35,"income":100000}
{"id":3,"firstname":"John","lastname":"Morgan","age":38,"income":null}
{"id":4,"firstname":"Peter","lastname":"Smith","age":38,"income":80000}
{"id":5,"firstname":"Dana","lastname":"Scully","age":47,"income":400000}

现在我想添加一个名为 modify_time($u) 的新列。所以我试过了

select *, modification_time($u)  as mt from users $u order by id;

它因语法错误而失败,所以我尝试过

select $u.*, modification_time($u)  as mt from users $u order by id;

它也因语法错误而失败

仅供参考,以下查询正在运行

select modification_time($u) as mt from users $u order by id; 

想法是获得与此查询相同的结果,但不需要指定所有字段

select id , firstname, lastname, age, income,  modification_time($u)  as mt from users $u order by id;
{"id":1,"firstname":"David","lastname":"Morrison","age":25,"income":100000,"mt":"2021-06-18T08:39:08.326Z"}
{"id":2,"firstname":"John","lastname":"Anderson","age":35,"income":100000,"mt":"2021-06-18T08:39:08.332Z"}
{"id":3,"firstname":"John","lastname":"Morgan","age":38,"income":null,"mt":"2021-06-18T08:39:08.336Z"}
{"id":4,"firstname":"Peter","lastname":"Smith","age":38,"income":80000,"mt":"2021-06-18T08:39:08.338Z"}
{"id":5,"firstname":"Dana","lastname":"Scully","age":47,"income":400000,"mt":"2021-06-18T08:39:08.340Z"}

有人能帮我吗 ?

4

1 回答 1

0

返回行的唯一表达式是行变量,即名称以'$'开头的表别名。您在调用 modify_time($u) 时已经使用它,因此您只需在您的选择。

select $u, modification_time($u)  as mt 
from users $u order by id;

在您的情况下,它将返回包含所有字段(选择 *)+您的表达式的记录

{"u":{"id":1,"firstname":"David","lastname":"Morrison","age":25,"income":100000},"mt":"2021-06-18T08:39:08.326Z"}
{"u":{"id":2,"firstname":"John","lastname":"Anderson","age":35,"income":100000},"mt":"2021-06-18T08:39:08.332Z"}
{"u":{"id":3,"firstname":"John","lastname":"Morgan","age":38,"income":null},"mt":"2021-06-18T08:39:08.336Z"}
{"u":{"id":4,"firstname":"Peter","lastname":"Smith","age":38,"income":80000},"mt":"2021-06-18T08:39:08.338Z"}
{"u":{"id":5,"firstname":"Dana","lastname":"Scully","age":47,"income":400000},"mt":"2021-06-18T08:39:08.340Z"}

我不知道是否可以将所有字段都设置为与您在上次输出中显示的相同的 json“级别”。

希望这可以帮助

于 2021-06-21T07:57:13.810 回答