我希望在以下查询选择中使用rownum
,我在下面的第一个查询中使用它是真的,但在下面的第二个查询中不知道如何使用它?
第一个有效的查询:
$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 . '%"
")
答案 0 :(得分:1)
尝试这一点,只需将@rownum
添加到SELECT
列表的开头,将@rownum
重置为隐式JOIN到最后。我使用类似的JOIN对我的一个数据库进行了测试,看起来它可以正常工作。
将显式JOIN
与隐式连接混合到@rownum
重置伪设看起来很奇怪,但我不知道在那里执行显式JOIN
的方法不是常见的专栏。如果有人可以改善这种情况,请发表评论。
$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 . '%"
");
更新明确的JOIN
没有ON
条款也有效:
FROM tour_foreign
INNER JOIN tour_foreign_residence
ON ( tour_foreign.id = tour_foreign_residence.relation )
JOIN (SELECT @rownum := 0) r
答案 1 :(得分:0)
怎么样:
$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
")