使用MySQL赋值运算符进行Coldfusion CFScript查询

时间:2013-06-19 12:44:25

标签: mysql coldfusion assignment-operator cfml

我想选择currentrow作为我的查询的一部分 - 我知道我可以循环查询并获取currentrow变量,但我在使用行之前正在做一个QoQ而我想要保留原始行,例如

//Original query
1, Audi
2, BMW
3, Skoda

//QoQ
1, Audi
3, Skoda

这是我得到的代码:

q = new Query( datasource = application.db.comcar );
q.setSQL('
    SELECT make, @rownum := @rownum +1 AS  `rownumber` 
    FROM cars, ( SELECT @rownum :=0 )
    LIMIT 10
');
r = q.execute().getResult();

但它引发了以下错误:

Parameter '=' not found in the list of parameters specified

SQL: SELECT make, @rownum := @rownum + 1 AS `rownumber` FROM cars, ( SELECT @rownum    :=0 ) LIMIT 10

这可以在cfquery中使用,但我想在CFScript中使用它。是否有替代方法可以使用:=或某种方式在查询中转义此内容。

1 个答案:

答案 0 :(得分:0)

看起来这是Coldfusion中的一个错误。我可以更改我的代码以使用cfquery,但我不想在我的页面中混合使用脚本和标记。

所以我的解决方法如下:

/*
 * based on the existing query 'tmpFields'
 */

// build array of row numbers
arrRowNumbers = [];
cntRowNumbers = tmpFields.recordCount;

for( r = 1; r <= cntRowNumbers; r++ ) {
    arrayAppend( arrRowNumbers, r );
}

// add a new column with the new row number array
queryAddColumn( tmpFields, "fieldNumber", "integer", arrRowNumbers );