7.13 JOIN句法
MySQL支持下列用于SELECT語句的JOIN句法:
table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional_expr
table_reference LEFT [OUTER] JOIN table_reference USING (column_list)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expr }
上述最后的LEFT OUTER JOIN的句法只是為了與ODBC兼容而存在的。
一個表可以是使用aliasedtbl_name AS alias_name或tbl_name alias_name的起的別名。
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;
INNER JOIN和,(逗號)在語義上是等價(jià)的,都是進(jìn)行一個在使用的表之間的全聯(lián)結(jié)。通常,你指定表應(yīng)該如何用WHERE條件聯(lián)結(jié)起來。
ON條件是可以用在一個WHERE子句形式的任何條件。
如果在一個LEFT JOIN中沒有右表的匹配記錄,一個所有列設(shè)置為NULL的行被用于右表。你可以使用這個事實(shí)指出表中在另一個表中沒有對應(yīng)記錄的記錄:
mysql> select table1.* from table1
LEFT JOIN table2 ON table1.id=table2.id
where table2.id is NULL;
這個例子找出在table1中所有的行,其id值在table2中不存在(即,所有table1中的在table2中沒有對應(yīng)行的行)。當(dāng)然這假定table2.id被聲明為NOT NULL。
USING (column_list)子句命名一系列必須存在于兩個表中的列。 例如一個USING子句:
A LEFT JOIN B USING (C1,C2,C3,...)
被定義成在語義上等同一個這樣的ON表達(dá)式:
A.C1=B.C1 AND A.C2=B.C2 AND A.C3=B.C3,...
2個表的NATURAL LEFT JOIN被定義為在語義上等同于一個有USING子句命名在兩表中存在的所有列的一個LEFT JOIN。
STRAIGHT_JOIN等同于JOIN,除了左表在右表之前被讀入,這能用于這些情況,聯(lián)結(jié)優(yōu)化器將表的順序放錯了。
一些例子:
mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;
re: 致老大和同志們書,zz from 老徐 SYBIL@BLOGJAVA 2006-12-13 18:33
==========================================================================================================================================================================================================================================================想想自己的高中,大學(xué),每一步都走得不容易,是該倍加珍惜的時(shí)候了。
re: 要擺正自己的位置 SYBIL@BLOGJAVA 2006-12-03 09:39
莫 生 氣
作者:丁勁
“莫生氣”本是佛家禪道開導(dǎo)世人的誡語。
經(jīng)歷了一些世事,也才慢慢領(lǐng)會到“莫生氣”其實(shí)也是世俗中的一種生存智慧。
有一個經(jīng)典小故事:1980年美國總統(tǒng)大選期間,里根的競選對手卡特在一次關(guān)鍵的電視辯論中抓住他的生活作風(fēng)問題發(fā)起蓄意攻擊。里根絲毫沒有生氣,只是微微一笑,詼諧地調(diào)侃說:“你又來這一套了”。一時(shí)間,聽眾哈哈大笑,為里根的精彩回答鼓起掌來。這樣,卡特反而陷入了尷尬的境地。里根則為自己贏得了更多的信賴和支持,并最終獲得大選的勝利。
看來,莫生氣不僅是一種風(fēng)度。還是一種精神力量。
幾乎每個人都會在生活中遇到不公平的對待。別人的輕視,羞辱或責(zé)備……每個人生氣總是可以找到理由的。但是心理學(xué)家認(rèn)為:憤怒基于責(zé)備。換個思維角度來說,你的“憤怒”又或許會成為另一個人生氣的理由。如果這樣,結(jié)果將會越來越糟糕。生氣所傷害的往往不僅是別人,還有自己。
業(yè)余我自學(xué)過中醫(yī)西醫(yī)還有營養(yǎng)學(xué)的一些知識。知道憤怒會導(dǎo)致高血壓,胃潰瘍,失眠等。而且喜歡生氣的人患癌癥和神經(jīng)衰弱的可能性比正常人大。可見生氣對身心也是有百害而無一利。原來“莫生氣”也是健康法寶之一啊。
有一句名言:人生最大的敵人是自己。人們往往不能戰(zhàn)勝自己的情緒。其實(shí),很多時(shí)候生氣已經(jīng)成為某些人的一種習(xí)慣。而要真正地改變自己,也只有讓“莫生氣”變成自己的一種生活習(xí)慣。所謂“江山易改,本性難移”。這并不是理由----老師曾經(jīng)笑著這樣解釋:本性“難”移,不是“不”移。可見還是可以移的……
這幾年,一直從事銷售工作。做過很多行業(yè)的推銷員。面對不同的人不同嘴臉和態(tài)度,深知道“忍耐”的重要。為了業(yè)績和生計(jì),也練就了一張推銷員特有的“厚臉皮”。等到工作之余,再將心中的不痛快工作的壓力和怨氣找個方式來發(fā)泄……但是,能讓我堅(jiān)持下來并喜歡營銷這一行。還是緣于我從“忍耐”到“莫生氣”的心態(tài)轉(zhuǎn)變。一個人的“忍耐”是有限度的,說不定哪天就要忍無可忍甚至崩潰。“莫生氣”讓我知道自己應(yīng)該在乎的是什么,原本追求的是什么……所以,那些需要“忍耐”的東西既然不是我們要的,就當(dāng)沒見到吧。何必硬抓在手里硬往自己心里裝下去?
“莫生氣”這三個字讓我的工作變得更加輕松和順利。
記得情感矯正專家譚春虹老師說的那句話:不能生氣的人是笨蛋,而不去生氣的人才是聰明人。
其實(shí),我不想做個聰明人。我只想擁有簡單快樂一點(diǎn)的生活----所以,也懶得生氣。
re: Ajax OpenDoc放出 SYBIL@BLOGJAVA 2006-04-24 11:24
可夠提供一下源代碼?
我的郵箱sybilwhile@gmail.com