2

次のように、(iOS アプリケーションで) SQLite クエリを使用しています。

SELECT * FROM tblStations WHERE StationID IN ('206','114','113','111','112','213','214','215','602','603','604')

ただし、IN 句で指定した順序でデータを返すことが本当に必要な場合は、結果のデータを降順または昇順で取得しています。

これは可能ですか?

4

5 に答える 5

5

結果を並べ替える簡単な方法

NSArray *stationIDs = @[@206,@114,@113,@111,@112,@213,@214,@215,@602,@603,@604];

NSArray *stations = @[@{@"Id":@(604)},@{@"Id":@(603)},@{@"Id":@(602)},@{@"Id":@(215)},
                      @{@"Id":@(214)},@{@"Id":@(213)},@{@"Id":@(112)},@{@"Id":@(111)},
                      @{@"Id":@(113)},@{@"Id":@(114)},@{@"Id":@(206)}];

stations = [stations sortedArrayUsingComparator:
            ^NSComparisonResult(NSDictionary * dict1, NSDictionary *dict2)
{
    NSUInteger index1 = [stationIDs indexOfObject:dict1[@"Id"]];
    NSUInteger index2 = [stationIDs indexOfObject:dict2[@"Id"]];
    return [@(index1) compare:@(index2)];
}];
于 2013-07-17T11:07:11.457 に答える
1

昇順、降順、またはランダムではない順序で SQL データを返す手段はないと思います (意図的にそうするか、単にデータベース エンジンがデータを返すために選択した順序で)。

NSDictionaryそのため、SQLite クエリによって返されたすべてのデータを単純に取得し、StationID 値をキーとして格納することはおそらく理にかなっています。その後、必要な順序で取得するのは簡単です。

于 2013-07-17T10:45:32.940 に答える