SQL SERVER 下:1、遞歸查詢父分類下的各個子分類。 2、查詢每個商品分類中最貴的前兩個商品SQL
阿新 • • 發佈:2017-12-31
nio span clas 適用於 商品 一行 class com 分享圖片
1、遞歸查詢父分類下的各個子分類。表設計:
SQL:
--CTE 語句(適用於MSSQL2005以後版本) with cte_testNavi(Id,Name,Pid ) as ( --這是查詢語句 SELECT Id,Name,Pid FROM Navi WHERE Name=‘汽車‘ union all --這是需要遞歸的部分,CTE 自身調用完成循環遞歸查找 SELECT a.Id,a.Name,a.Pid FROM Navi a INNER JOIN cte_testNavi b ON (a.Pid=b.Id) ) select * from cte_testNavi
2、查詢每個商品分類中最貴的前兩個商品SQL
表設計:
SQL:
--要求根據商品分類取出每個商品下最貴的前兩個物品 -- OVER( partition by c.ClassID order by i.Price DESC)over 開窗函數可以避免group by帶來的不包含在子列的情況, --但是開窗函數會返回多行結果,要根據使用情況去判定,比如這裏我要按照ClassID商品類別ID進行分組 --RANK函數微軟的定義是:返回結果集分區內每行的排名。一行的排名是一個加上所涉及行之前的行列數。 --比如這裏我按Price價格去排序,取出每個分類下最貴的商品從上到下排序 SELECT * FROM ( SELECT i.Price,i.CommodityName,c.ClassName,RANK() OVER( partition by c.ClassID order by i.Price DESC) rank2 FROM CommodityInfo i INNER JOIN CommodityClass c ON i.CommodityClass=c.ClassID )R WHERE rank2<=2;
SQL SERVER 下:1、遞歸查詢父分類下的各個子分類。 2、查詢每個商品分類中最貴的前兩個商品SQL