1

取得していないクエリの一部。これらの内部結合は何をしていますか?

私のプロジェクトでは、すべてのデータを含むテーブル speeldatum があります。以下のクエリは、rownum 列の値を変更していますが、どのように理解できないのですか。クエリに内部結合がない場合、rownum列の値はゼロです。クエリで定義されたmysqlユーザーを正しく理解していません。

出力例 (ROWNUM 値の順序を考慮しないでください)
....、rownum 0 ....

...、rownum 1、...
...、rownum 2、...

 from speeldatums  as t 
    inner join (select @rownum:=0) as r
    inner join (select @prev:="") as r2
    inner join (select @prevdatum:="") as r3**

完全なクエリ:

'create temporary table rr_prepare ( rownum INT NOT NULL, datum_unix 
   INT(11) NULL, categorie VARCHAR(20) NOT NULL, entry_id INT NOT NULL,

   INDEX(rownum), INDEX(datum_unix), INDEX(categorie), INDEX(entry_id) )
   ENGINE=MyISAM

   select t.*, @rownum:=if(@prev=t.categorie and
   @prevdatum=t.datum,@rownum+1,0) as rownum, @prev:=t.categorie as
   prevcategorie, @prevdatum:=t.datum as prevdatum

   from speeldatums  as t  inner join (select @rownum:=0) as r 
  inner join (select @prev:="") as r2 
  inner join (select @prevdatum:="") as r3 ';
4

1 に答える 1

0

結合はいくつかの変数を導入し、クエリでそれらを初期化しています。

2 つのクエリで別々に行うこともできます。

set @rownum:=0;
select @rownum := rownum + 1, .... ;

ただし、クエリを 1 つだけ実行したい場合は、サブセレクトを使用して、クエリでオンザフライで変数を宣言および初期化できます。

... inner join (select @rownum:=0) r ...
于 2012-11-18T14:07:08.653 に答える