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
上有一个交叉连接。内部联接和交叉联接之间没有区别!