1

DBIx :: Classを使用していて、ResultSetを取得しています。ResultSetを並べ替えるのが好きです。特定の列「City」を値の修正リスト(「London」、「New York」、「Tokyo」)と照合するのが好きです。値のリストに都市が見つかった場合、その結果をトップグループに移動します。都市が見つからない場合は、その結果をResultSetの一番下のグループに移動します。

4

2 に答える 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 に答える