Mysql連接查詢(xún)Mysql支持的連接查詢(xún)有哪些
CREATE TABLE `chx` ( `id` VARCHAR(20) NOT NULL, `name` VARCHAR(50) DEFAULT NULL, `name2` CHAR(4) DEFAULT NULL, `name3` VARCHAR(4) DEFAULT NULL, `score` INT(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `age` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
1.Mysql支持的連接查詢(xún)方式列舉如下:
a:內(nèi)連接 inner join也是默認(rèn)的連接方式
根據(jù)比較方式不同分為如下三種:
等值連接:使用等號(hào)來(lái)作為連接條件
自然連接:natural join,通過(guò)在兩張表里尋找列名和數(shù)據(jù)類(lèi)型都相同的字段(長(zhǎng)度不管),然后再根據(jù)這些相同的字段進(jìn)行連接(內(nèi)連接)。并返回所有符合條件
的結(jié)果。
不等值連接:就是在連接條件中使用除等號(hào)以外的其他比較運(yùn)算符,例如:on c.id between s.XXX and s.XXX;
注意:可以使用using關(guān)鍵字簡(jiǎn)化連接:
使用條件:1.查詢(xún)必須是等值連接 2.等值連接中的列必須具有相同的名稱(chēng)和數(shù)據(jù)類(lèi)型。
b:外連接 outer join
外連接可以分為以下三類(lèi):
左外連接(left outer join 或left join):檢索結(jié)果為滿(mǎn)足連接條件的數(shù)據(jù)行+左表中不滿(mǎn)足連接條件的數(shù)據(jù)行,然后再根據(jù)過(guò)濾條件過(guò)濾即為查詢(xún)結(jié)果(先連接后
過(guò)濾)注意:此處過(guò)濾條件很容易犯錯(cuò),一般要以左表的條件進(jìn)行過(guò)濾,不然容易犯錯(cuò)。例如:
SELECT c.*,t.* FROM chx c LEFT JOIN test t ON c.id = t.id WHERE c.`id`= 1和 SELECT c.*,t.* FROM chx c LEFT JOIN test t ON c.id = t.id WHERE t.`id`= 1
因?yàn)楫?dāng)副表t沒(méi)有等于1的記錄而主表c有的話(huà)第一條語(yǔ)句是由結(jié)果的,而第二條是沒(méi)有結(jié)果的。見(jiàn)下圖:
右外連接(right outer join 或right join):與左外連接相反。
全外連接(full outer join 或full join):注意:mysql不支持全外連接:除了顯示滿(mǎn)足連接條件的行外,還顯示join兩側(cè)表中所有滿(mǎn)足檢索條件的行。
c:交叉連接 cross join
即兩表的所有數(shù)據(jù)行的笛卡爾積。
bitsCN.com聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com