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, .... ;

但是,如果您只想运行一个查询,您可以使用子选择在查询中动态声明和初始化一个变量

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