我有一个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语句进行排序。
我不明白为什么会这样。任何的想法?感谢。
答案 0 :(得分:0)
为什么要将ID添加到$idsJoin2
?如果您想按该列排序,那么它不应该只是'patterns.id'
吗?
答案 1 :(得分:0)
问题在于它只获得了一行,因此无法通过任何其他标准进行排序。该问题的最终解决方案如下:
http://forums.devshed.com/mysql-help-4/problem-when-using-a-temporary-table-631676.html