mysql 表連線//及any in exists
內連結:
select * from tableA inner join tableB on tableA.列=tableB.列
外連線:(笛卡兒積)
select * from tableA full join tableB on tableA.列=tableB.列
左連線:
select * from tableA left join tableB on tableA.列=tableB.列
右連線:
select * from tableA right join tableB on tableA.列=tableB.列
自然連線:(和 inner join 相似,但是去除了重複)
select * from tableA natural join tableB on tableA.列=tableB.列
子查詢:
where 後面跟一個查詢語句做判斷條件
in (not in):匹配子集中任意一個元素
SELECT count(*) FROM world.country where Name IN (SELECT Name FROM world.country where Name like "C%");
ALL :
val>ALL(subset):表示val比subset中每一個元素都大
val<>ALL(subset):表示val不在subset中,等效於NOT IN (subset)
ANY:
val=ANY(subset):表示val等於subnet子集中的任何一個元素皆可,等同於val IN (subnet)
val>ANY(subnet):表示val比subnet中最小的元素大即可
EXISIS:
因為select語句先執行where條件後的語句,再篩選欄位,當執行完where條件後,若這條結果集存在,則where表示式後面永遠都是true,否則為false。也就是說要麼查詢所有,要麼沒有資料。那麼我只想查校友id,為6588的校友,使用exists該怎麼寫,經過一番測試,內查詢中的id,必須為外查詢的id,即SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE t.id_='6588' )