Php sql内部联接中的Rownum?

Php sql内部联接中的Rownum?,php,mysql,codeigniter,join,Php,Mysql,Codeigniter,Join,我想在下面的查询选择中使用rownum,我在下面的第一个查询中使用它true,但不知道在下面的第二个查询中应该如何使用它 第一个正确的查询: $this -> db -> query(" SELECT @rownum := @rownum + 1 rownum, t.* FROM (SELECT * FROM table ORDER BY id DESC LIMIT $offset, $coun) t

我想在下面的查询选择中使用
rownum
,我在下面的第一个查询中使用它true,但不知道在下面的第二个查询中应该如何使用它

第一个正确的查询:

$this -> db -> query("
SELECT @rownum := @rownum + 1 rownum, 
       t.* 
FROM   (SELECT * 
        FROM   table 
        ORDER  BY id DESC 
        LIMIT  $offset, $coun) t, 
       (SELECT @rownum := 0) r 
")
我在
foreach
as:
echo intval($row->rownum+$offset)

第二个查询(我想在这个查询中使用它,这个查询如何?)


尝试此操作,只需将
@rownum
添加到
SELECT
列表的开头,并将
@rownum
重置为结尾的隐式连接。我用一个类似的连接对我的一个数据库进行了测试,它似乎工作正常

针对
@rownum
reset伪表,将显式
连接与隐式连接混合在一起看起来很奇怪,但我不知道在没有公共列的情况下如何执行显式
连接。如果有人能改善这种情况,请发表评论

$this -> db -> query("
SELECT
       @rownum := @rownum + 1 rownum,
       tour_foreign.id, 
       tour_foreign.name, 
       tour_foreign_residence.name_re, 
       tour_foreign.service, 
       tour_foreign.date_go, 
       tour_foreign.date_back, 
       tour_foreign.term 
FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation ),
       (SELECT @rownum := 0) r
WHERE  tour_foreign.name LIKE "%' . $find . '%" 
        OR tour_foreign_residence.name_re LIKE "%' . $find . '%"
");
UPDATE不带
ON
子句的显式
JOIN
也可以:

FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation )
       JOIN (SELECT @rownum := 0) r

尝试此操作,只需将
@rownum
添加到
SELECT
列表的开头,并将
@rownum
重置为结尾的隐式连接。我用一个类似的连接对我的一个数据库进行了测试,它似乎工作正常

针对
@rownum
reset伪表,将显式
连接与隐式连接混合在一起看起来很奇怪,但我不知道在没有公共列的情况下如何执行显式
连接。如果有人能改善这种情况,请发表评论

$this -> db -> query("
SELECT
       @rownum := @rownum + 1 rownum,
       tour_foreign.id, 
       tour_foreign.name, 
       tour_foreign_residence.name_re, 
       tour_foreign.service, 
       tour_foreign.date_go, 
       tour_foreign.date_back, 
       tour_foreign.term 
FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation ),
       (SELECT @rownum := 0) r
WHERE  tour_foreign.name LIKE "%' . $find . '%" 
        OR tour_foreign_residence.name_re LIKE "%' . $find . '%"
");
UPDATE不带
ON
子句的显式
JOIN
也可以:

FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation )
       JOIN (SELECT @rownum := 0) r
那么:

$this -> db -> query("SELECT @rownum := @rownum + 1 rownum, 
       t.* 
FROM   (SELECT tour_foreign.id, 
       tour_foreign.name, 
       tour_foreign_residence.name_re, 
       tour_foreign.service, 
       tour_foreign.date_go, 
       tour_foreign.date_back, 
       tour_foreign.term 
FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation ) 
WHERE  tour_foreign.name LIKE "%' . $find . '%" 
        OR tour_foreign_residence.name_re LIKE "%' . $find . '%") t, 
       (SELECT @rownum := 0) r 
")
那么:

$this -> db -> query("SELECT @rownum := @rownum + 1 rownum, 
       t.* 
FROM   (SELECT tour_foreign.id, 
       tour_foreign.name, 
       tour_foreign_residence.name_re, 
       tour_foreign.service, 
       tour_foreign.date_go, 
       tour_foreign.date_back, 
       tour_foreign.term 
FROM   tour_foreign 
       INNER JOIN tour_foreign_residence 
         ON ( tour_foreign.id = tour_foreign_residence.relation ) 
WHERE  tour_foreign.name LIKE "%' . $find . '%" 
        OR tour_foreign_residence.name_re LIKE "%' . $find . '%") t, 
       (SELECT @rownum := 0) r 
")

你可以
。。。交叉连接(选择@rownum:=0)r
或(在MySQL中它可以工作!)一个
连接
而不使用
ON
子句:
。。。JOIN(SELECT@rownum:=0)r
@ypercube我试图
左JOIN
而没有
ON
子句,这是一个语法错误。你说得对-一个直接的
连接
有效。一个人也可以在a.id=b.id
上有一个交叉连接。内部联接和交叉联接之间没有区别!你可以
。。。交叉连接(选择@rownum:=0)r
或(在MySQL中它可以工作!)一个
连接
而不使用
ON
子句:
。。。JOIN(SELECT@rownum:=0)r
@ypercube我试图
左JOIN
而没有
ON
子句,这是一个语法错误。你说得对-一个直接的
连接
有效。一个人也可以在a.id=b.id
上有一个交叉连接。内部联接和交叉联接之间没有区别!