關於SQL的學習筆記

2021-04-12 21:57:47 字數 1291 閱讀 6405

將兩次查詢的記錄結果混和成乙個結果進行輸出

中心思想在於將兩次查詢的結果分別作為乙個新的表,將2張新表盡心一次混和查詢,一共至少3次查詢,成功輸出結果表

基本結構為

select

* from (select * from datatable1)

下面是我的例子:

select

distinct * from (

select a.c as c,a.a as a,a.b as b from test_group_by_1 as a

inner

join

test_group_by_2 as b on

a.c = b.c

left join

test_group_by_3 as c on

a.c = c.c

) as test1

left join

(select c,cnt from (

select a.c as c,count(c.c) as cnt from test_group_by_1 as a

inner join

test_group_by_2 as b on

a.c = b.c

left join

(select c,b from test_group_by_3 )as c on

a.c = c.c

group by a.c) as test) as test2 on

test1.c = test2.c

這樣將兩個部分通過sql合併起來,其實是一種比較麻煩的做法,這個功能能在程式裡面實現,不過在有2種狀況可能用這種方式更好.

1.當我們的程式架構已經固定,你能傳遞給表示層的資料必須是乙個而不是兩個datatabel或者dataset的時候,我們不得不在查詢階段將兩組資料合併.

2.2組資料是有聯絡的,如果第二組資料是依賴於第一組資料,同時再表示層的初始化的時候,有些控制項必須考第二組資料來確定如何初始化,這樣我們在表示層合併並且判斷第二組資料可能會更加麻煩.所以這個時候直接把兩組資料在資料層合併起來,傳給表示層,表示層所需要的僅僅是乙個判斷,而不需要在遍歷第一組資料而安排第二組資料了.

上例分組採用的第乙個表的分組,但是count的時候確是count的第三個表.這裡如果我們count第三個表,同時以第三個表分組,得到的最後cnt回產生乙個null值.如果按照上例,cnt永遠不會出現null,最多是0

比如圖書館,圖書館裡面同乙個名字的書可能有n本,這個時候第三張表記錄的count數字表示的是目前館內還有幾本該書。

書的數目應該最少為0,而不是null

關於sql的學習(一)

在這裡,我將整理sql的知識點。一 建立資料庫的命令 create database database name on filegroup filegroup name log on 以這個命令格式為例,大寫的單詞代表實際操作中不變的單詞,小寫的單詞,代表可以變的單詞,由 修飾的單詞,裡面仍然有其他...

SQL 學習筆記 ( )

sql 語法特點 1 每個語句以 結束,中間用 包含,間隔。2 對變數和常量等需要用 包含。3 關鍵字大寫,變數名首大寫字母用表名表徵,然後用小寫表徵屬性 基本語句 desc 表名 檢視表詳細屬性 建表 create table 表名 屬性名 型別 約束 主鍵 primary key 如果是域為主鍵...

sql學習筆記

declare rc int declare stattime datetime declare endtime datetime select stattime 2008 06 22 00 00 00.000 select endtime 2008 06 22 01 00 00.000 while...