求SQL聯表查詢語句,求SQL聯表查詢語句

2022-03-05 23:59:41 字數 5382 閱讀 9668

1樓:說話只為偽裝的啞巴

首先你要了解一下資料的傳輸:

1、你不用擔心,20多萬資料很少的。我見過最高的單個表有近2億行資料。

2、資料庫以sqlserver為例,它會把自己要用的資料快取到記憶體裡,然後再更新到硬碟,也就是說,你增刪改查的時候,實際上會先寫入到記憶體。所以sqlserver執行久了,你會發現工作管理員的記憶體佔用越來越高,可怕的是這個增長還沒有上限。故如果在需要一直執行,很少重啟裝置釋放記憶體的裝置,必須給資料庫設立一個允許使用的記憶體峰值。

而總記憶體越大,資料庫能使用的記憶體越大,自然查起來越快。

然後不同的資料庫穩定性不同也會有區別。涉及到大資料,oracle要比sqlserver穩定,當然你的資料量還不算大量資料。

瞭解到到這裡就能明白資料庫查詢的快慢,不光只看sql語句的優劣,也要看你自身裝置的配置。

最後,涉及到查詢,你想讓速度優化,其實建立索引是個最簡便的方法,不過建立索引會在刪資料的時候有影響,你的資料量不大,可以忽略不計。為避免卡頓。你可以用top來過濾資料,每次只修改前面幾萬條ab相等,且c不等於1的資料,(數目你自己決定)

sql語句你可以用很多方法實現,這裡提供一個我最常用的

update top10000 table1 set table1.c=1 where table1.a in(select table2.

b from table2) and table c1 ≠ 1

2樓:匿名使用者

1.sql如下:

update 表1,表2

set 表1.c = 1

where 表1.a = 表2.b

2.至於優化的話,把表1的a列建個索引,表2的b列建個索引就行

sql語句聯表查詢

3樓:匿名使用者

聯表查詢一般有內連線、左/右連線、外連線。

內連線:

select * from t1 inner join t2 on t1.id1=t2.id2;

左連線:

select * from t1 left join t2 on t1.id1=t2.id2;

右連線:

select * from t1 right join t2 on t1.id1=t2.id2;

外連線:

select * from t1 outter join t2 on t1.id1=t2.id2;

4樓:匿名使用者

select a.*,a.need_pay-isnull(b.paied,0) as 還需交付 from a left join

(select a_id,sum(money)as paied from b group by a_id)b on a.a_id=b.a_id

where a.need_pay-isnull(b.paied,0)>0

5樓:匿名使用者

select a.a_id

from a,(select a_id, sum(money+ticket) as allpay from b group by a_id ) as c

where a.need_pay <> c.allpay and a.a_id =c.a_id

6樓:匿名使用者

**思路:

假設a、b兩表為一對多關係。

首先對b表用欄位a_id分組,求得每個小組的付款總和獲得子查詢表t,再用t表與a表進行基於a_id欄位實施等同連線,篩選出付款總和小於需付金額的那些a_id,最後以這個得到的a_id列表用in 子句對b表實施篩選,從而都得到最終結果。

select * from b where a_id

in (select a.a_id from a,

(select a_id,sum(money) as sum_pay from b group by a_id) t

where a.a_id=t.a_id and a.need_pay>t.sum_pay)

注意在比較需付金額和付款總額時,我使用了「大於」而不是「不等於」「a.need_pay>t.sum_pay」。

如果樓主需要將付款總額大於需付金額的那些記錄於也顯示出來的話,則可以使用「<>」不等於比較符。

不好意思,我看漏了問題補充。樓主也許還需要除b表欄位外,同時輸出a表的name、item和need_pay欄位

select b. b_id, a.a_id, a.name, a.item, a.need_pay, b.money from a,b

where a.a_id=b.a_id and b.a_id

in (select a.a_id from a,

(select a_id,sum(money) as sum_pay from b group by a_id) t

where a.a_id=t.a_id and a.need_pay>t.sum_pay)

只顯示符合條件的a表記錄

select * from a where a_id

in (select a.a_id from a,

(select a_id,sum(money) as sum_pay from b group by a_id) t

where a.a_id=t.a_id and a.need_pay>t.sum_pay)

求三表聯合查詢的sql查詢語句

7樓:夜很美

1、sql語句:select u.*,r.*,r.id rid

from user u left join sys_user_role sur  on u.id = sur.useridleft join sys_role r  on sur.

roleid = r.id

**:(表名截圖)

請點選輸入**描述

請點選輸入**描

注1:user(使用者表),sys_role(角色表),sys_user_role(關係表)。

表1:user(下圖)

請點選輸入**描述

請點選輸入**描述

表2:sys_role(下圖)

請點選輸入**描述

請點選輸入**描述

表3:sys_user_role(下圖)

請點選輸入**描述

請點選輸入**描述

算了,建表語句也給你們了,你們自己測試,這樣更詳細,(程式設計師)多動手,比什麼都好。(這裡的 介面 對寫**不太友好,我放部落格裡了,自己複製貼上測試使用就行)

2、sql語句解釋:

select a.*,b.*

from a表 a left join b表 b on a.id = b.aid

left join c表 c on b.cid = c.id

注2:此語句適合a表與c表連線,b表是關係表的情況。

8樓:大野瘦子

車訊語句:select username,psw from (a1 left join a2 on a1.a1_id=a2.

a1_id) left join a3 on a1.a1_id=a3.a1_id

這樣寫:

select

s.sname as 姓名, cs.coursename as 課程, c.score as 成績

from students as s

inner join score as c on (s.scode = c.studentid)

inner join course as cs on (cs.courseid = c.courseid

9樓:

比如有三張表,student,teacher , project :

第一種方法:select * from student,teacher,project where student.id=teacher.

sid and student.id=project.sid;

第二種:select * from student inner join teacher on student.id=teacher.

sid inner join project on student.id=project.sid;

10樓:久活生蛋

多表聯結查詢—三表聯結

select

s.sname as 姓名, cs.coursename as 課程, c.score as 成績

from students as s

inner join score as c on (s.scode = c.studentid)

inner join course as cs on (cs.courseid = c.courseid

11樓:老師小喬

select a.id,a.name,b.id,b.name,c.id,c.name from a,b,c

where a.b_id=b.id and a.c_id = c.id and b.id=c.b_id

多表聯合查詢sql語句

12樓:萌萌噠的小可愛喵喵醬

a、b兩表

a表:idd   name2   image2    tag2

1     長城     。    長城

2     故宮     。    故宮

3     天安門   。   天安門

b表:id   name     image   tag

1     愛情1   。    長城

2     天空     。   故宮

3     23愛     。   長城

當tag2=tag,輸出

查詢結果:idd      name2      image2      name              image

1          長城          。       愛情1、23愛   。、。

首先要在電腦桌面上麵點選我的電腦圖示,進入到我的電腦;

進入到我的電腦以後,在我的電腦裡面右鍵點選本地磁碟c,然後在下拉選單上面點選屬性;

進入到本地磁碟c屬性視窗之後,點選常規,然後在常規視窗裡麵點選磁碟清理;

點選磁碟清理之後進入到磁碟清理視窗,點選磁碟清理,然後選中要刪除的檔案框裡面的選項,再點選確定按鈕;

點選確定按鈕之後,會出現磁碟清理提示視窗,在視窗上面點選是;

點選是之後,系統就會自動清理本地磁碟c了,這樣就清理完成了。

13樓:匿名使用者

select a.no,a.name,b.subid,b.subname,c.score

from a,b,c

where a.no = c.no and b.subid = c.subid ;

求高手編寫SQL查詢語句急

個人認為樓上的回答有2個問題 第7小題,如果高學分課程這張表存在,那sql語句會出錯,應該先要用if not exist語句判斷這張表是否存在,如果存在,則用drop table語句刪除這張表才執行建立表的語句。第8小題應為select from 學生表 where year 出生日期 1993 o...

求這種查詢的具體sql語句

第一種解決方案 select from select spid,hw from t 1 src pivot count hw for hw in hwi00000001 hwi00000002 piv 第二種解決方案 select spid,sum hwi00000001 as hwi0000000...

sql用語句查詢,SQL用語句查詢null

select from borrowbook where returndate is null 補充 select b.bookid,b.bookname,a.returndate from borrowbook as a,book as bwhere a.bookid b.bookidand a....