次のように、(iOS アプリケーションで) SQLite クエリを使用しています。
SELECT * FROM tblStations WHERE StationID IN ('206','114','113','111','112','213','214','215','602','603','604')
ただし、IN 句で指定した順序でデータを返すことが本当に必要な場合は、結果のデータを降順または昇順で取得しています。
これは可能ですか?
次のように、(iOS アプリケーションで) SQLite クエリを使用しています。
SELECT * FROM tblStations WHERE StationID IN ('206','114','113','111','112','213','214','215','602','603','604')
ただし、IN 句で指定した順序でデータを返すことが本当に必要な場合は、結果のデータを降順または昇順で取得しています。
これは可能ですか?
結果を並べ替える簡単な方法
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)];
}];
昇順、降順、またはランダムではない順序で SQL データを返す手段はないと思います (意図的にそうするか、単にデータベース エンジンがデータを返すために選択した順序で)。
NSDictionary
そのため、SQLite クエリによって返されたすべてのデータを単純に取得し、StationID 値をキーとして格納することはおそらく理にかなっています。その後、必要な順序で取得するのは簡単です。