我正在使用 DBIx::Class 并且我有一个 ResultSet。我喜欢重新排序 ResultSet。我喜欢根据值的固定列表(“伦敦”、“纽约”、“东京”)检查特定列“城市”如果在值列表中找到城市,我想将该结果移至顶部组。如果未找到 city,我喜欢将该结果移至 ResultSet 中的底部组。
问问题
357 次
2 回答
1
ORDER BY expr可能是您正在寻找的。
例如,这里有一个表:
mysql> select * from test;
+----+-----------+
| id | name |
+----+-----------+
| 1 | London |
| 2 | Paris |
| 3 | Tokio |
| 4 | Rome |
| 5 | Amsterdam |
+----+-----------+
这里特别订购:
mysql> select * from test order by name = 'London' desc,
name = 'Paris' desc,
name = 'Amsterdam' desc;
+----+-----------+
| id | name |
+----+-----------+
| 1 | London |
| 2 | Paris |
| 5 | Amsterdam |
| 3 | Tokio |
| 4 | Rome |
+----+-----------+
将其转换为 ResultSet 方法:
$schema->resultset('Test')->search(
{},
{order_by => {-desc => q[name in ('London', 'New York', 'Tokyo')] }}
);
于 2011-11-08T15:05:03.900 回答
0
就像是:
#!/usr/bin/env perl
use strict;
use warnings;
my $what = shift or die;
my @ary = qw(alpha beta gamma);
unshift(@ary,$what) unless ( grep(/$what/,@ary) );
print "@ary\n";
1;
运行为:
./myscript omega
于 2011-11-08T00:13:11.677 回答