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
@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 這兩個哪個好?其中的回答最為深入。其實這個問題還是有一定的歷史原因的,不管你習慣什麼樣的寫法只要知道來龍去脈就不會再被細枝末節來迷惑了。...