假设我有一个表数据为:
id col_1 col_2
----------------------
11 10000 20000
12 13000 10000
是否可以检索id
的{{1}}?因此,此处的预期输出为col_1 < col_2
。
答案 0 :(得分:1)
您使用特殊字段比较运算符比较字段:
var gr = new GlideRecord("u_table_name");
gr.addQuery("col_1", "SAMEAS", "col_2"); // i.e. WHERE col_1 = col_2
gr.query();
允许比较同一张表上两个不同字段的运算符:
SAMEAS
:字段=其他字段NSAMEAS
:字段!=其他字段GT_FIELD
:字段>其他字段LT_FIELD
:字段<其他字段GT_OR_EQUALS_FIELD
:字段> =其他字段LT_OR_EQUALS_FIELD
:字段<=其他字段如有疑问,您随时可以针对过滤器用户界面支持的所有内容编写GlideRecord查询。只需在UI中构建所需的过滤器,然后运行它,然后右键单击面包屑(在过滤器构建器UI上方),然后选择“复制URL”。
这将为您提供编码的查询URL,您可以将其直接粘贴到GlideRecord api gr.addEncodedQuery(...)
中,也可以使用3个参数gr.addQuery(columnName, operatorName, value)
进行解构,对于动态字段比较运算符,{ {1}} arg是 other 列名称。
答案 1 :(得分:1)
是的,这绝对是可能的。关于字段比较,我想到的第一件事就是列表过滤器。您需要尝试验证是否可以从列表视图中过滤掉这些记录。如果是,则可以肯定地使用GlideRecord API对其进行查询。如果无法查询它们,我们还可以使用其他选项,例如动态过滤器,甚至数据库视图也可以提供帮助。
所以我为数据添加了一个样本表,您需要确保这些列是Integer Type并对其应用过滤器
相关查询已从过滤器复制为u_col_1LT_FIELDu_col_2。您可以根据过滤器运算符获取不同的编码查询。
现在,下一步是进行表查询以获取所需的ID。
var myTable = new GlideRecord('u_custom_table'); //Table to query
myTable.addEncodedQuery('u_col_1LT_FIELDu_col_2'); //Replace your filter query
myTable.query();
while(myTable.next()){
gs.print("Id: "+myTable.u_id); //Replace id column
}
以及通过后台脚本执行时的输出
可以将相同的方法应用于从“立即服务”表中查询任何记录。
答案 2 :(得分:0)
据我所知,在GlideRecord查询中是不可能做到的。我们再也无法使用sql了,所以我认为根本不可能。
但是,如果您可以在表格中添加一列,则可以这样做:
id col_1 col_2 sup
---------------------------
11 10000 20000 true
12 13000 10000 false
您可以使用插入和更新业务规则设置sup标志,以便在GlideRecord查询中查询sup字段。