我想在下面的查询选择中使用 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
的 html 代码中回显上面的 rownum 为:echo intval($row -> rownum + $offset)
第二个查询(我想在这个查询中使用它,这个查询怎么样?):
$this -> db -> query("
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 . '%"
")
最佳答案
试试这个,只需将 @rownum
添加到 SELECT
列表的开头,并将 @rownum
重置为隐式 JOIN 到结尾。我用类似的 JOIN 对我的一个数据库进行了测试,它似乎可以正常工作。
将显式 JOIN
与针对 @rownum
重置伪表的隐式连接混合在一起看起来很奇怪,但我不知道执行显式 JOIN
当没有公共(public)列时。如果有人可以改善这种情况,请发表评论。
$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
关于php - sql INNER JOIN 中的 Rownum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812518/