给定查询(伪代码):
<cfquery name="myquery">SELECT * FROM stuff</cfquery>
如何摆脱第一张唱片?在这种情况下,更改SQL不是一种选择。
我尝试过:myquery.RemoveRows(0,1);
但收到错误:
No matching Method/Function for Query.REMOVEROWS(numeric, numeric) found
我在使用Railo 3 BTW
答案 0 :(得分:11)
瞧瞧:
myquery.RemoveRow(1);
完全符合我的要求。把它留给Railo来做一些不同的事情!
答案 1 :(得分:4)
无法想办法从原始对象中删除一行。我能想到的两件事是:
查询查询。这假设您能够识别不想要的记录并在WHERE中指定它们。
使用queryNew()构造一个新查询。循环遍历原始查询,将querySetCell()放入新查询中以获取所需的记录。此功能可以很容易地合并到UDF中。事实上,说明这让我想到检查cflib.org。见#3
检查cflib.org :)查看http://www.cflib.org/udf/QueryDeleteRows
答案 2 :(得分:2)
“RemoveRows”实际上是对底层Java方法的调用,因此您必须转换这些数字。像这样:
myquery.RemoveRows(
JavaCast( "int", 0 ) // starting row, zero-based
,JavaCast( "int", 1 ) // number to delete, returns error if too many
)
所以可能这个方法是“int,int”,如果你不抛出它,它看起来像“数字,数字”。有人可能会说这是没有文档的,但它是如此简洁,以至于你可以(正如我所做的那样)将它包装在一个函数中,这样如果它发生了变化,你只需要用另一种解决方法替换函数的内容。
答案 3 :(得分:2)
Railo已添加removeRows,请参阅here。我使用此方法的ACF代码现在也在Railo上运行,没有任何更改。
有了这个,Railo实现现在与ACF匹配。 (另请注意,原始的Railo实现基于0,而新的和ACF版本都是基于1。)
答案 4 :(得分:0)
我通常采用的方式是查询以下查询:
SELECT * FROM myquery
LIMIT {1,10000}
这应该适用于Railo。它的作用是将查询偏移一个并拉出10000条记录。
你也可以这样做:
SELECT * FROM myquery
WHERE {primarykey} <> {value}
选择除传入的主键值以外的所有记录。
ColdFusion令人敬畏的是,有很多方法可以完全满足您的需求。
答案 5 :(得分:0)
您可以在处理结果时跳过该行:
<cfoutput query="myquery">
<cfif myquery.currentrow GT 1>
<!---Do the work here. --->
</cfif>
</cfoutput>