条件に一致する行の横にあるすべての行を選択するにはどうすればよいですか?しかし、IDフィールドのような秘密のRowIDがないことを考えると
これは10行のテーブル構造ですが、将来的には行数が増える予定です。
プレーンテキスト:
ID Date N1
1 DateTime 9
2 DateTime 2
3 DateTime 5
4 DateTime 9
5 DateTime 3
6 DateTime 6
7 DateTime 7
8 DateTime 9
20 DateTime 3 //Sequence broken
21 DateTime 9
注:「DateTime」文字列は単なるシンボリックであり、任意のDateTimeになります。
番号の後の最初のN1番号を知りたい:9
私はいくつかの方法を試しましたが、結果は私が必要とするものではありません。
期待される結果は次のとおりです。
ID Date N1
2 DateTime 2
5 DateTime 3
20 DateTime 3
これを達成する簡単な方法がこの質問に投稿されましたが、RowIDがシーケンスを保持している場合に限ります。
行番号ごとにインデックスを作成する変数を使用して、1つで2つの一時テーブルを作成でき@row_num
、RowID
値に関係なくそれぞれを1つずつインクリメントします。次に、この一時テーブルrow_num+1
から、N1
値が等しい場所を選択します9
。そこから、値が一致する列id
とN1
列を明示的に選択してrow_num
、目的の結果を取得します。
SET @row_num:=0;
DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 (SELECT @row_num:=@row_num+1 AS row_num, id, N1 FROM numbers);
DROP TABLE IF EXISTS t2;
CREATE TEMPORARY TABLE t2 (Select row_num+1 as row_num FROM t1 WHERE N1 = 9);
SELECT id, N1 FROM t1
WHERE row_num IN (Select * From t2);
Select * From Numbers (ここでは
RowID
等しいもの5
がありません)上記のSQLクエリ
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加