0

不知道这里是否有人知道 Tasker Android 应用程序,但我想每个人都可以理解我想要完成的工作,因为我基本上会谈论“原始”SQL 代码,因为它是用最常用的语言编写的。

首先,这就是我想要的,大致:

IF (SELECT * FROM ("january") WHERE ("day") = (19)) MATCHES [%records(#) = 1] END

ELSE

SELECT * FROM ("january") WHERE ("day") = (19)  ORDER BY ("timea") DESC END

上面我想说的是:如果在代码的第一部分(IF ... END)中,结果记录的数量,匹配'day'列上的数字19,只是一个,在这里结束执行;但如果找到多个记录,则跳到 ELSE 之后的下一部分。

如果您是 Tasker 用户,您将了解下一个(我当前的)设置:

A1: SQL Query [ Mode:Raw File:Tasker/Resources/Calendar Express/calendar_db Table:january Columns:day Query:SELECT * FROM ("january") WHERE ("day") = (19) Selection Parameters: Order By: Output Column Divider: Variable Array:%records Use Root:Off ] 
A2: SQL Query [ Mode:Raw File:Tasker/Resources/Calendar Express/calendar_db Table:january Columns:day Query:SELECT * FROM ("january") WHERE ("day") = (19)  ORDER BY ("timea") DESC Selection Parameters: Order By: Output Column Divider: Variable Array:%records Use Root:Off ] If [ %records(#) > 1 ]
An:...

因此,如您所见,A1 将始终运行,无一例外地在变量数组 '%records()' 中获取结果(% 是 Tasker 识别 vars 的方式,如其他语言中的 $;并且使用括号而不是方括号)。然后,如果数组中的条目数只有一个,则将跳转 A2(如果 %records(#) > 1),并执行以下操作。

但是,如果在运行 A1 后 %records() 数组包含 3,则执行 A2 操作会覆盖之前设置的 %records() 数组的内容。但这一次将包含相同数量的记录 (3),但重新排序。

有可能做到这一点,只需一行代码吗?谢谢 ;)

4

1 回答 1

0

正如' sticky bit '之前在评论中回复的那样,我仍然可以使用第二个动作,因为如果它只是一条记录,它不会影响输出。解决了!

于 2018-08-15T16:50:51.367 回答