連線兩表sql語句,二種寫法,sql面試題目

2022-02-17 01:04:45 字數 1940 閱讀 3288

select a.bookname,b.categoryname

from bk_bookname a,bk_category b

where a.categoryid=b.id

(一般用於mysql中,相當於inner join[內連線])

select     bk_bookname.bookname, bk_category.categoryname

from         bk_bookname inner join

bk_category on bk_bookname.categoryid = bk_category.id

注意 right join 、left join 的區別

表a:表b:

1. select * from a  join  b  on a.id = b.id   

將顯示9

條資料。

inner join(

等值連線)只返回兩個表中聯結字段相等的行

2.select * from a  left join  b  on a.id = b.id     

將顯示12

條資料。

(left

join

(左聯接

) 返回包括左表中的所有記錄和右表中聯結字段相等的記

3.select * from a  right join  b  on a.id = b.id  

將顯示10

條資料。

(right

join

(右聯接

) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄

)4. select * from a,b where  a.id = b.id

等同於內聯接

5. 找出a表,在age 18到20之間的記錄

select * from  a    where  (age between 18 and 20)

(如果 test_expression 的值大於或等於 begin_expression 的值並且小於或等於 end_expression 的值,則 between 返回 true。)

6. 找出單科分數前二位同學的姓名

select

[name] from a join

(select

top(2) id,

max(score)

as score from b group

by id order

by score desc

)as aa

ona.id=aa.id

7. 寫乙個儲存過程,要求輸入id找出該id對應的姓名和最高分數,返回name:score,

如:張六:90

alter

proc [sp_totalscore]

@id int

,@return nvarchar

(100)

output

asbegin

declare @name nvarchar

(50)

declare @score int

select

top 1 @name=a.name,@score=b.score

from a join b on a.id=b.id

where a.id =@id

order

by b.score desc

set @return=@name+

':'+

cast

(@score as

nvarchar

(50))

end//

列印declare

@return nvarchar

(50)

execute

sp_totalscore 6,@return output

print

@return

二種sql分頁查詢語句分享

根據題意理解 本質就是寫分頁查詢 每頁條數 10條 當前頁碼 4頁 複製 如下 mikudhpj 第一種 select from select row number over ordwww.cppcns.comer by id ascwww.cppcns.com as num,from userin...

從兩種SQL表連線寫法來了解過去

由朋友提出此類問題 select from a,b where a.id b.id select from a inner join b on a.id b.id 這兩個哪個好?其中的回答最為深入。其實這個問題還是有一定的歷史原因的,不管你習慣什麼樣的寫法只要知道來龍去脈就不會再被細枝末節來迷惑了。...

從兩種SQL表連線寫法來了解過去

由朋友提出此類問題 select from a,b where a.id b.id select from a inner join b on a.id b.id 這兩個哪個好?其中的回答最為深入。其實這個問題還是有一定的歷史原因的,不管你習慣什麼樣的寫法只要知道來龍去脈就不會再被細枝末節來迷惑了。...