2017-10-18 76 views
0

的標準我有一個表名和它們共享相同的位置剔除結果輸出

John NY 
Paul NY 
Andrew NY 
Eva NY 
Patrick NJ 
Sally CA 
Aby NJ 

現在,我創建了一個腳本這一個標準,用戶可以選擇一個名稱(如:名稱='約翰') 一旦名字被選中,一列也會列出紐約所有其他的名字(保羅,安德魯,伊娃)。

我可以用下面的plsql創建它,但你永遠不知道誰會被選中。所以我不能硬編碼。它看起來很簡單,但我正在爲此而努力。我想要一種無需選擇使用標準就可以獲得獎勵的方式。

選擇d.name,d.location,OTHER_NAME

從MYWORK d

其中d.location = 'NY'

和d.name!= '約翰'

+1

你使用的是MySQL還是Oracle?不要標記不涉及的產品。 – jarlh

回答

0

如果只有2個級別,那麼自我加入是我最喜歡的方法:

SELECT d2.name, d.location 
FROM (SELECT DISTINCT location FROM Yourtable WHERE name = 'John') L 
JOIN Yourtable L2 ON L.location = L2.location 

如果locati on/name是不同的,這也可以寫成:

SELECT d2.name, d.location 
FROM Yourtable l 
JOIN Yourtable L2 ON L.location = L2.location 
WHERE l.name = 'John' 

我不確定你希望列的外觀。這可能是你在之後:

SELECT d.name, d.location, d2.name 
FROM Yourtable l 
JOIN Yourtable L2 ON L.location = L2.location 
WHERE l.name = 'John' 
AND l2.name <> 'John' 
+0

非常感謝你的亞倫。第三個是我所追求的。現在我的下一步工作就是把它帶到一個更大的腳本中,從最後的名字將作爲標準的下標中刪除硬編碼名稱。 – user3139937

+0

@ user3139937樂於幫助。這只是第三個查詢,「name」是一個變量,可以作爲參數傳遞。如果您需要幫助,請隨時提出另一個問題。 SO喜歡單獨的問題。此外,如果答案可以幫助您,請不要忘記接受答案/ upvote。 –