2017-08-02 80 views
0

假設我們有一個Person表,其中包含FirstName,LastName和其他一些列。如何避免同一表中的子查詢

FirstName | LastName | City 
---------------------------- 
John  | White | NY 
Adam  | White | SFO 
Kevin  | White | LA 
Tom  | Loni | Chicago 

現在,我想檢索所有與「Adam」相同姓氏的人,這是我的輸入。 我不想子查詢,這意味着我不想先選擇「亞當」的姓氏,然後使用結果再次選擇。有沒有更有效的方法來做到這一點?

+1

子查詢將是最有效,最簡單,且易於管理。有沒有理由不想這麼做? –

+0

你不想使用子查詢?如果您只搜索「Adam」作爲輸入,您將不得不查詢數據庫一次以查明Adam的姓氏是「White」。 –

+0

是否意味着避免使用子查詢,而不是避免使用多個語句? –

回答

3

你可以在LastName領域做一個自我JOIN

Select P2.* 
From Person P 
Join Person P2 On P2.LastName = P.LastName 
Where P.FirstName = 'Adam'; 
+0

我太遲了! –

+0

非常感謝你,感覺像是你們1 + 1的問題。 – heiyan

0

你也可以做這樣的事情:

select P2.* 
from Person P1 
inner join Person P2 on P2.lastname = P1.LastName and P1.FirstName = 'adam'