2016-04-06 9 views
1

SQLクエリでは100の結果行が得られます。私はこの100行の中で単一の行の位置を知る必要があります。私はループでチェックできるユニークなフィールドを持っていますが、これには長い時間がかかります。質問された結果の中に単一項目の位置を得る方法がありますか?SQLiteは、ループを使用せずに結果クエリ内に単一の行位置を取得します

例:ユニークユーザーIDが(12, 13, 20, 21, 34, 5)の表があります。これらのユーザーは作成日順に並べ替えられます。 SQLクエリーでid = 34を使用してユーザーの位置を取得するにはどうすればよいですか?

答えて

2

SQLクエリを最適化することは、巨大な結果を操作するより効率的です。

希望のIDの所有者

SELECT 
    count(*) 
FROM 
    table 
WHERE 
    creationDate < (SELECT creationDate FROM table WHERE id = 34) 

より小さい作成日を持って、レコードの位置が選択上記の値である(または必要になりますどのように多くのユーザーがチェックされるにselectwhereと句を作ります1を加算するかどうかは、0または1から数えているかによって異なります)。


作成日は、あなたがこのような状況に対処する必要があります繰り返すことができる場合は、あなたが同じcreationDateでレコードをどのように扱うかによって異なります(多分、単純なcreationDate <= ...はあなたのために十分である)

+0

ありがとう、これは私の問題を解決しました。 –

0

あなたはこのような何かを試すことができ

SELECT row (SELECT ROW_NUMBER() OVER (ORDER BY columnChoosen) AS row, columnChoosen FROM yourTable) sub WHERE sub.columnChoosen = 34 
関連する問題