加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy SQL忽略动态select语句中的order by子句

发布时间:2020-12-14 16:20:43 所属栏目:大数据 来源:网络整理
导读:我在Grails应用程序中使用Groovy SQL来查询未连接为应用程序数据源的数据库.对于页面,默认情况下,SQL select语句不包含order by子句.如果用户单击其中一个标记,我想动态更改查询以在指定方向上对指定列进行排序.当我尝试将order by子句添加到select语句时,我
我在Grails应用程序中使用Groovy SQL来查询未连接为应用程序数据源的数据库.对于页面,默认情况下,SQL select语句不包含order by子句.如果用户单击其中一个标记,我想动态更改查询以在指定方向上对指定列进行排序.当我尝试将order by子句添加到select语句时,我得到一个(捕获的)SQLException,表明我的查询未正确结束.

我的查询:

sql.eachRow("select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${sortColumn} ${sortOrder}") { row ->
                    results << row.toRowResult()
                }

我可以通过对返回的列表进行排序来解决问题,但是如果可能的话,我想在SQL语句中执行此操作.这是一个已知的问题吗?

解决方法

这是Groovy试图用你的所有参数替换?并制作PreparedStatement

这不适用于ORDER BY子句,因此您需要use Sql.expand

尝试:

sql.eachRow( "select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${Sql.expand(sortColumn)} ${Sql.expand(sortOrder)}") { row ->
  results << row.toRowResult()
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读