使用ORDER BY FIELD按多个列排序时mysql中的问题

时间:2009-07-23 09:19:47

标签: sql mysql

我有一个MySQL查询,我按字段排序:

"... WHERE (patterns.id IN($idsJoin)) $where
                       ORDER BY FIELD($idsJoin2) LIMIT 0 , $numLines";

其中$ idsJoin2是这样的:

 my $idsJoin = join(',',@ids);
 my $idsJoin2="patterns.id, ".$idsJoin;

和“@ids它是一个包含我想要订购的数字的数组。

事情是,在通过$ idsJoin2订购后,我想通过其他列进行排序,如下所示:

"WHERE (patterns.id IN($idsJoin)) $where
                       ORDER BY FIELD($idsJoin2), products.product, versions.version, builds.build LIMIT 0 , $numLines";

如果我将这些列放在ORDER BY FIELD之前,它会对它们进行任何问题排序,但如果它们位于ORDER BY FIELD之后,这就是我想要的,它只是忽略它们,只是按ORDER BY FIELD语句进行排序。

我不明白为什么会这样。任何的想法?感谢。

2 个答案:

答案 0 :(得分:0)

为什么要将ID添加到$idsJoin2?如果您想按该列排序,那么它不应该只是'patterns.id'吗?

答案 1 :(得分:0)

抱歉,我忘了说我解决了这个问题。无论如何,谢谢你的回复。

问题在于它只获得了一行,因此无法通过任何其他标准进行排序。该问题的最终解决方案如下:

http://forums.devshed.com/mysql-help-4/problem-when-using-a-temporary-table-631676.html