sql復雜查詢
Ⅰ sql 語句復雜排序查詢問題
order by 可以跟case語句,你用case語句把規則寫出來就行,比如:
order by (case when column3 is null then (column2+3) else column3 end)
請根實際體情況和排序規則改寫…
Ⅱ SQL怎樣處理復雜的數據查詢關系
sql查詢問題比較靈活,常用是多表查詢,有如下幾種供參考:
1、笛卡爾積:select * from 表1,表2;( 列數相加,行數記錄相乘)
2:等值連接:select * from 表1 s1,表2 s2 where s1.id = s2.id;
3、外連接:在等值連接的基礎上加上主表中的未匹配數據(左外和右外)
左外:select * from 表1 s1 left join 表2 s2 on s1.id = s2.id
右外:select * from 表1 s1 right join 表2 s2 on s1.id = s2.id
全外:select * from 表1 s1 full join 表2 s2 on s1.id = s2.id
4、內連接(等值連接的一種)
select * from 表1 s1 inner join 表2 s2 on s1.id = s2.id
5、子查詢:子查詢在外部查詢的FROM子句之後使用時,一般被當作一個數據源使用
(註:id為兩張表的相同欄位,全文)
Ⅲ 關於復雜的SQL查詢
SELECT distinct(CASE
WHEN 列 = 'XY-P-01' THEN
列
WHEN substrb(列,1,6)='XY-P-0' THEN
'XY-P-0'
WHEN substrb(列,1,6)='XY-P-1' THEN
'XY-P-1'
ELSE
'YZ-S-0'
END)
FROM 表;
Ⅳ sql server 復雜查詢
盡量不要使用嵌套子查詢,優先使用連接子查詢;
In 關鍵字盡量少使用,效率低,除非 in 包含的信息量非常少,並且叫固定;
如果查詢條件和查詢結果表無直接關聯,優先根據查詢條件查詢出符合條件的臨時結果值,然後和最終結果表關聯;
除 top n 方式分頁之外,使用 row_number() over 方式分頁也可以;
能明確指定結果欄位的,盡量不要用 * ;
不相關的欄位可以省略;
如果最終結果表數據比較大,考慮分表,分區,分庫;
查詢結果表欄位盡量不要包含大文本之類的欄位;
where 條件中對於varchar 欄位 的 like 查詢要適度,不要用太多,會影響效率;
Ⅳ 如何寫出復雜業務查詢的sql語句
如何寫出復雜業務查詢的sql語句
如何寫出復雜的sql語句:
首先要建立一個概念,復雜的sql語句也是最基本的sql語句連接而成,所以最重要的是先要理清思路和邏輯,弄清自己要查哪幾張表,要用哪幾個欄位,表之間如何關聯,將這些弄清,然後由簡單到復雜,從最基本的sql寫起,通過找共同點,實現表關聯等。
select後是自己需要的欄位
from後是自己需要查詢的多張表或者自己子查詢得出的結果集
where後是條件 是對from後的結果集進行篩選
多張表關聯 最重要的是找共同點 比如通過userid 第一種方式就是通過join管理 第二種方式就是通過where條件子句 比如幾個表的userid相等來篩
選結果集
在處理復雜的業務查詢時,先從邏輯層面理清幾張表之間的關系以及自己需要的欄位和數據 然後逐步拆分 從最簡單的局部sql出發 一步步迭代出復
雜的sql語句 這可以看做是寫復雜腳本的原則:
由簡單到復雜 逐步迭代 得出結果
最重要的還是在工作實踐中多加總結 主動接觸
Ⅵ 求教一條比較復雜的sql查詢語句
SELECT COUNT(T.姓名) FROM TABLE表 T
GROUP BY T.姓名,T.商品名稱 HAVING COUNT(T.商品名稱) = n
--
產品數量為n
Ⅶ 復雜的SQL查詢語句
一般出庫的商品,進庫里一定有,用進庫左連接出庫表就可以了。
select No,inCount,outCount from IN a left outer join OUT b on a.No=b.No
結果是 編號 入庫數量 出庫數量,因為用入庫表做左連接,可以看入庫的有多少沒出庫,有些入庫的出庫是空也有可能,
如果你要看出庫的多少,倉庫里還有多少,只要反過來,用出庫表做左連接就好了.
select No,inCount,outCount from Out a left outer join IN b on a.No=b.No
Ⅷ SQL SELECT復雜查詢如何實現
這個語句拚命地用join就行了。
SELECT 銷售主表.錄入時間,客戶表.客戶名,貨品表.貨品名稱,銷售明細表.數量,銷售明細表.銷售單價,銷售明細表.數量*銷售明細表.銷售單價 AS 金額
FROM 銷售主表 join 客戶表 on 銷售主表.客戶ID=客戶表.客戶ID join 銷售明細表 on 銷售表表.銷售單號=銷售明細表.銷售單號 join 貨品表 on 銷售明細表.貨品ID=貨品表.貨品ID
這樣就所有對應的記錄都選出來了,如果要加上條件,就在語句後面加上where ……
Ⅸ SQL語句多表查詢,復雜
scid是開課次數欄位嗎?你試試看這樣對不對
select top(12) a.scid,b.tid,c.tname
from 校區開課表 a
left join 課程表 b on a.cid = b.cid
left join 教師表 c on b.tid = c.tid
order by a.scid desc
Ⅹ 復雜sql語句查詢
selectid,name,isnull((selectSUM(金額)fromB表whereid=A表.idandbno=20),0)正常消費,isnull((selectSUM(金額)fromB表whereid=A表.idandbno=30),0)充值,(selecttop1餘額fromB表whereid=A表.idorderby時間desc)余額,(selectMAX(時間)fromB表whereid=A表.id)時間
fromA表
這樣看一下行不行