是否可以通过续集中的未选择列进行订购?

时间:2011-09-15 23:07:46

标签: ruby sequel

如果列表t包含c1c2cx列,则表单中的Sequel(版本3.27.0)查询失败:

DB[:t].order(:cx).select{[:c1, :c2]}

我的输出中不需要cx的值,我只是希望它们用于排序。

等效的SQL将是:

SELECT c1, c2 FROM t ORDER BY cx;

我目前的解决方法是只要求cx,即使我不需要它:

DB[:t].order(:cx).select{[:c1, :c2, :cx]}

任何人都可以确认这是续集中已知的行为/错误吗?

1 个答案:

答案 0 :(得分:3)

Sequel为该代码生成的SQL是:SELECT c1, c2 FROM t ORDER BY cx。如果它失败了,那很可能是你的数据库出了问题(你需要发布你想要调试它的回溯)。

FWIW,我将使用以下续集代码:DB[:t].order(:cx).select(:c1, :c2)。如果您没有使用它提供的功能,则没有理由使用虚拟行块。