0

我已经编写了一个在我的模型中使用的 SQL 查询,如下所示:

Tag.find_by_sql(["SELECT tags.id, tags.name, count(*) AS count FROM tags
    INNER JOIN taggings ON tags.id = taggings.tag_id
    WHERE 
    (taggings.taggable_type = 'Discussion' AND taggings.taggable_id IN (SELECT id FROM  `discussions` WHERE discussions.group_id = ?))
     GROUP BY tag_id ORDER BY ? LIMIT ?;", self.id, self.id, self.id, self.id, order, limit])

这可以正常工作并提取所需的标签。但是,标签的顺序不正确。我在服务器控制台中注意到查询在 order 语句周围有撇号,如下所示:

ORDER BY 'count desc'

当我删除撇号时,如下所示:

ORDER BY count desc

并手动运行查询,它会以正确的顺序提取标签。有没有办法阻止将撇号添加到查询中?

干杯

托尼

4

1 回答 1

0

原因是你已经参数化了列名

ORDER BY ?

您传递的值已被清理,这就是它变为'count desc'.

您不能通过设计传递列名和表名。唯一的方法是连接字符串中的列名。

于 2013-01-16T16:06:26.623 回答