我要提取出三個(gè)表里面的每個(gè)字段,如A,B,C 表 公共字段為 P_ID
我們擁有10余年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、手機(jī)網(wǎng)站開(kāi)發(fā)、H5技術(shù)、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專(zhuān)業(yè)設(shè)計(jì)服務(wù)并滿(mǎn)足您的需求。
select a.*,b.*,c.*
from a,b,c
where a.p_id = b.p_id
and b.p_id = c.p_id
查所有內(nèi)容:select a.*,b.* from 表名1 a,表名2 b where a.id = b.id;
查指定內(nèi)容:select a.要查的字段1,a.要查的字段2 from 表名1 a,表名2 b where a.id = b.id;
注意:a表跟b表 id是一樣的!
兩個(gè)表之間有相同的列嗎?列名不一定相同,但值一定要是一致的那種。
如果沒(méi)有,在兩個(gè)表中添加相同列,使用關(guān)聯(lián)進(jìn)行查詢(xún),否則是達(dá)不到你的要求的。
查詢(xún)的SQL語(yǔ)句:
select
t1.title,
t2.content
from
table1
as
t1,
table2
as
t2
where
t1.col
=
t2.col;
其中col是添加的可以關(guān)聯(lián)的字段。
建議采用聯(lián)合查詢(xún) join 而且使用全連接(FULL JOIN)方式
select *
from web_pian
FULL JOIN Orders
ON web_pian.mingcheng=web_shang.mingcheng
Order by web_pian.mingcheng
解釋下:FULL Join 全連接將會(huì)輸出所有的記錄,即使有些空缺,和Left Join 左連接有所不同
兩個(gè)表需要有共同的字段用來(lái)做對(duì)應(yīng)關(guān)系,假定表a 的ab字段和表b 的bc字段意義是一樣的:
新建兩張表:
表a:ab ac ad
1 1 2
2 3 4
3 5 6
表b: bc bd be
1 7 8
3 9 10
4 11 12
(此時(shí)這樣建表只是為了演示連接SQL語(yǔ)句,當(dāng)然實(shí)際開(kāi)發(fā)中我們不會(huì)這樣建表,實(shí)際開(kāi)發(fā)中這兩個(gè)表會(huì)有自己不同的主鍵。)
一、外連接
外連接可分為:左連接、右連接、完全外連接。
1、左連接 left join 或 left outer join
SQL語(yǔ)句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd執(zhí)行結(jié)果以ab行為準(zhǔn):
表:ab ac ad bc bd be
1 1 2 1 7 8
2 3 4 0 0 0
3 5 6 3 9 10
其中b表bc第二行的值在ab中沒(méi)有對(duì)應(yīng)的所以左連無(wú)法找出來(lái),同理右連會(huì)變成這樣:
SQL語(yǔ)句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd執(zhí)行結(jié)果以bd行為準(zhǔn):
表:ab ac ad bc bd be
1 1 2 1 7 8
3 5 6 3 9 10
0 0 0 4 11 12
左外連接包含left join左表所有行,如果左表中某行在右表沒(méi)有匹配,則結(jié)果中對(duì)應(yīng)行右表的部分全部為0.
注:此時(shí)我們不能說(shuō)結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù)。當(dāng)然此處查詢(xún)結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù),因?yàn)樽笥覂杀泶藭r(shí)為一對(duì)一關(guān)系。
右外連接包含right join右表所有行,如果左表中某行在右表沒(méi)有匹配,則結(jié)果中對(duì)應(yīng)左表的部分全部為0。
注:同樣此時(shí)我們不能說(shuō)結(jié)果的行數(shù)等于右表的行數(shù)。當(dāng)然此處查詢(xún)結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù),因?yàn)樽笥覂杀泶藭r(shí)為一對(duì)一關(guān)系。
3、完全外連接 full join 或 full outer join
SQL語(yǔ)句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a full join 表b on 表a.ab=表b.bd執(zhí)行結(jié)果:
表:ab ac ad bc bd be
1 1 2 1 7 8
2 3 4 0 0 0
3 5 6 3 9 10
0 0 0 4 11 12
完全外連接包含full join左右兩表中所有的行,如果右表中某行在左表中沒(méi)有匹配,則結(jié)果中對(duì)應(yīng)行右表的部分全部為0,如果左表中某行在右表中沒(méi)有匹配,則結(jié)果中對(duì)應(yīng)行左表的部分全部為0。
二、內(nèi)連接 join 或 inner join
SQL語(yǔ)句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a inner join 表b on 表a.ab=表b.bdinner join 是比較運(yùn)算符,只返回符合條件的行。
表:ab ac ad bc bd be
1 1 2 1 7 8
3 5 6 3 9 10
三、交叉連接 cross join
1.概念:沒(méi)有 WHERE 子句的交叉聯(lián)接將產(chǎn)生連接所涉及的表的笛卡爾積。第一個(gè)表的行數(shù)乘以第二個(gè)表的行數(shù)等于笛卡爾積結(jié)果集的大小。
表a: ab
星期一
星期二
星期三
表b: cd
張三
李四
王五
SELECT a.ab,b.cd FROM 表a CROSS JOIN 表b
ab cd
星期一 張三
星期一 李四
星期一 王五
星期二 張三
星期二 李四
星期二 王五
星期三 張三
星期三 李四
星期三 王五
本文題目:MySQL雙表查詢(xún)?cè)趺床?mysql雙表關(guān)聯(lián)查詢(xún)
鏈接地址:http://www.muchs.cn/article8/hhidop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、ChatGPT、外貿(mào)網(wǎng)站建設(shè)、用戶(hù)體驗(yàn)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容