不知道这里是否有人知道 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),但重新排序。
有可能做到这一点,只需一行代码吗?谢谢 ;)