1樓:匿名使用者
select a.*,b.id bparent_id,b.name parent_name from s_auth a left outer join s_auth b on
a.parent_id=b.id where a.menu=0
這是查詢的主**
select a.* , row_number() over( order by parent_id,sort asc ) as r from
(。。。
) a這是 將查詢結果 按照 parent_id,sort 排序,並增加行號 row_number()
select * from (。。。) b where r > 0 and r <= 10
這是 顯示 第一行到第十行
這是網頁查詢中的分頁顯示經常用到的
2樓:射手幽靈伊
select *
from (
----這個是根據最裡面的查詢的結果,根據父級parent_id和順序號sort 排序
select a.* , row_number() over( order by parent_id,sort asc ) as r
from (
-- 這個是最裡面的查詢語句,從 s_auth 表找出自已及父級,
-- 父級有可能沒有,所以使用 left outer join
select a.*,b.id bparent_id,b.name parent_name
from s_auth a left outer join s_auth b -- 有可能沒有父級,所以使用 left outer join
on a.parent_id=b.id
where a.menu=0
) a) b
where r > 0 and r <= 10 --找出前10條資料
3樓:匿名使用者
多個查詢巢狀,以及聯合查詢,看**的技巧,先從最裡面的括號看起,這是核心;
1、(select a.*,b.id bparent_id,b.name parent_name from s_auth a left outer join s_auth b on
a.parent_id=b.id where a.menu=0 ) a
這一段,是從s_auth鏈結了s_auth一次,同乙個表鏈結(應該是所需資料有多行),條件是menu為0;這些查詢結果成為乙個臨時表,命名為a
2、select a.* , row_number() over( order by parent_id,sort asc ) as r from
將上一段的查詢結果按parent_id 正序( asc)進行排序,也不是從小往大排,這些查詢結果成為第2 個臨時表,命名為b
3、select * from (...)where r > 0 and r <= 10
最外面這層是做了個條件限制,只查詢10行,這裡可以按需要,如果想查100 行,就在r <= 10後在加個0
不知道你明白了沒有?
sql連線查詢語句問題,SQL連線查詢語句問題!!!
簡單寫的話,sql語句就是 select top 10 title date from select title date from new union select title date from res union select title date from affiche as tbltit...
sql查詢語句的問題,sql語句關於查詢的問題
select d,count from select day 訪問時間 d,ip位址,count from 訪問記錄表 where year 訪問時間 2008 and month 訪問時間 5 group by 1,2 一 如果你的資料庫伺服器獲取日期時間欄位的日數 1 31 不是day,請你修改...
sql查詢語句問題
select from 銷售合計 where 出貨單位 like 第一醫院 and 品名 like 蘇靈 or 品名 like 尼莫地平片 也沒啥別的毛病。覺得你這裡沒有必要模糊查詢啊。你不是知道要的是什麼資料嗎,可以將like改成 select from 銷售合計 where 出貨單位 like ...