【问题标题】:not getting the this mysql query没有得到这个mysql查询
【发布时间】:2012-11-18 13:52:00
【问题描述】:

我没有收到的部分查询;这些内部连接在做什么?

我有包含所有数据的表 speeldatum,在我的项目中。下面的查询正在更改 rownum 列的值,我怎么不明白。在查询中没有内部连接,rownum 列的值为零,我对查询中的 mysql 用户定义的变量没有正确理解。

示例输出(不要考虑 ROWNUM 值的顺序)
....., 行号 0 ……

..., 行号 1, ...
..., 行号 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 ';

【问题讨论】:

  • 你想达到什么目标?
  • 你的问题到底是什么?

标签: mysql


【解决方案1】:

连接正在引入一些变量并在查询中初始化它们。

您也可以在 2 个查询中分别执行此操作:

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

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

... inner join (select @rownum:=0) r ...

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多