復雜的sql語句查詢
A. 如何寫出復雜業務查詢的sql語句
如何寫出復雜業務查詢的sql語句
如何寫出復雜的sql語句:
首先要建立一個概念,復雜的sql語句也是最基本的sql語句連接而成,所以最重要的是先要理清思路和邏輯,弄清自己要查哪幾張表,要用哪幾個欄位,表之間如何關聯,將這些弄清,然後由簡單到復雜,從最基本的sql寫起,通過找共同點,實現表關聯等。
select後是自己需要的欄位
from後是自己需要查詢的多張表或者自己子查詢得出的結果集
where後是條件 是對from後的結果集進行篩選
多張表關聯 最重要的是找共同點 比如通過userid 第一種方式就是通過join管理 第二種方式就是通過where條件子句 比如幾個表的userid相等來篩
選結果集
在處理復雜的業務查詢時,先從邏輯層面理清幾張表之間的關系以及自己需要的欄位和數據 然後逐步拆分 從最簡單的局部sql出發 一步步迭代出復
雜的sql語句 這可以看做是寫復雜腳本的原則:
由簡單到復雜 逐步迭代 得出結果
最重要的還是在工作實踐中多加總結 主動接觸
B. 一個挺復雜的查詢,怎樣寫這個sql語句
假設表1有一個主鍵欄位(id)
create table 表2
(
id int not null primary key,
num int
)
declare @i int
set @i=5
while @i<=10
begin
insert into 表2(num)
select count(表1.id) from 表1 where between @i and (@i+1)
@i=@i+1
end
C. 復雜的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
D. 復雜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表
這樣看一下行不行
E. 比較復雜的sql語句
如果你的是ACCESS資料庫或者MS SQL資料庫,可以使用視圖來實現,做起來很容易的。你可以試一下。
以下介紹主要方法:
INNER JOIN 運算
組合兩個表中的記錄,只要在公共欄位之中有相符的值。
語法
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 運算可分為以下幾個部分:
部分 說明
table1, table2 記錄被組合的表的名稱。
field1, field2 被聯接的欄位的名稱。若它們不是由數字構成的,則這些欄位必須為相同的數據類型並包含同類數據,但它們無須具有相同的名稱。
compopr 任何的關系比較運運算元:"=," "<," ">," "<=," ">=," 或 "<>."
說明
可以在 FROM 子句中使用INNER JOIN運算。.這是最普通的聯接類型。只要在這兩個表的公共欄位之中有相符值,內部聯接將組合兩個表中的記錄。
可以使用 INNER JOIN 與部門表及員工表選擇每一個部門中的全部員工。反之,可以使用 LEFT JOIN或 RIGHT JOIN運算創建 outer join,從而選擇所有部門(即使有些並沒有員工)或所有員工(即使有些尚未分配到部門)。
若試圖聯接包含 Memo或 OLE Object數據的欄位,會導致錯誤。
可以聯接任何兩個相同類型的數值欄位。例如,可以聯接 AutoNumber和 Long欄位,因為它們類型相似。但不能聯接 Single 和 Double 類型的欄位。
下列示例顯示如何在類標識符欄位聯接類表及產品表:
SELECT CategoryName, ProctName
FROM Categories INNER JOIN Procts
ON Categories.CategoryID = Procts.CategoryID;
在上面的示例中,類標識符是已被聯接的欄位,但是它並不包含在查詢輸出中,因它並非被包含在 SELECT 語句之中。在這個示例中,若要包含聯接欄位,將欄位名包含在 SELECT 語句中, Categories.CategoryID.
也可以使用下列語法,在一個 JOIN 語句中鏈接多個 ON 子句:
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2) OR
ON table1.field3 compopr table2.field3)];
也可以使用下列語法,嵌套 JOIN 語句:
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3 compopr tablex.fieldx)]
ON table2.field2 compopr table3.field3)
ON table1.field1 compopr table2.field2;
在一個 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOIN。
F. 請教一個有點復雜的MSSQL資料庫的SQL查詢語句,類似於搜索引擎
這個用MSSQL測試過,可行,
說明一下:
T1表名,
Vstr欄位名
SELECT
*
FROM
t1
WHERE
vstr
LIKE
'%祖國%'
UNION
ALL
SELECT
a.*
FROM
(SELECT
*
FROM
t1
WHERE
vstr
LIKE
'%祖%國%')
a
where
(a.vstr
not
in
(SELECT
vstr
FROM
t1
WHERE
vstr
LIKE
'%祖國%'))
再說明下:這個問題還得看環境,當然存儲過程也是SQL查詢.只不過是效率問題
,這類問題高手都在CSDN,歡迎來切磋,Q1034020004
G. 復雜sql語句,查詢慢,一直顯示正在載入,求助
SQL語句如果聯合了多張表或頻繁使用多個函數進行查詢,確實會影響效率。需要優化的話,建議給查詢條件設置索引,索引能提高查詢速度;但是如果你的SQL語句需要復合查詢而且有很多運算的話,建議還是把一條SQL語句拆開成三四條來寫,雖然拆分來寫有點麻煩但是查詢響應速度明顯快好幾倍,不信你試試!
H. 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
I. SQL語句復雜四則運算查詢
select value_a+value_b*value_a+value_b/value_c*value_b*(value_c+value_a)
from
(select
max(case letter when 'A' then num else 0 end ) as value_a,
max(case letter when 'B' then num else 0 end ) as value_b,
max(case letter when 'C' then num else 0 end ) as value_c,
from tb1 group by letter )b
這個就相當於 a+b*a+b/c*b(c+a) 啦~,整個式子太長,就以此類推吧
J. 求教一條比較復雜的sql查詢語句
SELECT COUNT(T.姓名) FROM TABLE表 T
GROUP BY T.姓名,T.商品名稱 HAVING COUNT(T.商品名稱) = n
--
產品數量為n