从结果输出中排除标准

时间:2017-10-18 18:48:07

标签: oracle plsql

我有一张名字的桌子,他们共享同一个位置

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

现在,我创建了一个脚本,这是用户可以选择名称的标准(例如:Name ='John') 选择名称后,列中还会列出纽约州的所有其他名称(Paul,Andrew,Eva)。

我可以使用下面的plsql创建它,但你永远不知道将选择谁。所以我不能硬编码。它看起来很简单,但我正在努力。我想要一种无需选择使用标准即可进行调音的方法。

选择d.name,d.location,other_name

来自MYwork d

其中d.location ='NY'

和d.name!='John'

1 个答案:

答案 0 :(得分: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

如果位置/名称不同,也可以这样写:

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'