2017-06-06 57 views
0

我很难解决这个问题。我正在使用Microsoft SQL Server 2014(版本12.0.4100.1)。SQL Server:获取IN值,发现该行

我有两个表contactsbusiness。我有一组联系人用户名。我在WHERE取出由该用户名阵列业务列表使用子查询,像这样:

SELECT business.id, business.name, business.notes 
FROM business 
WHERE business.id IN (SELECT contacts.business_id 
         FROM contacts 
         WHERE contacts.username IN ('username1', 'username2', 'username3')) 

此查询工作正常,但我无法弄清楚如何还选择值它每一排被发现;例如:如果我从与用户名“用户名1”的接触获取业务,我想取一下,看看结果:

business.id = 1 
business.name = 'Business 1' 
business.notes = 'Notes from business 1.' 
contacts.username = 'username1' 

得到那个结果,我可以从什么接触来到每一个企业很容易看到。

预先感谢您!

编辑:可能有多个联系人为每个业务,所以做一个INNER JOIN将返回每个联系人重复的业务结果。我想知道在子查询中选择哪个联系人。

+1

'INNER JOIN'在共同的商业标识的'contacts'表。 –

+0

每个企业可能有多个联系人,因此执行“INNER JOIN”会为每个联系人返回重复的业务结果。我想知道在子查询中选择哪个联系人。 – devrique

+0

哎呀,对不起!这种方式不是重复的结果,谢谢! – devrique

回答

3

我认为你正在寻找一个join

SELECT b.id, b.name, b.notes, c.username 
FROM business b JOIN 
    contacts c 
    ON b.id = c.business_id 
WHERE c.username IN ('username1', 'username2', 'username3'); 
+0

这里的问题是,每个企业可能有多个联系人,因此执行“INNER JOIN”会为每个联系人返回重复的业务结果。我想知道在子查询中选择哪个联系人。 – devrique

+0

@devrique。 。 。这只会选择列表中的联系人。它不会为每个联系人产生一行。如果一个企业匹配多个联系人,您想选择哪一个? –

+0

哎呀,对不起!今天我有点紧张。确实,这种方式不会重复业务成果。我以为我已经试过了,并没有奏效。非常感谢! :) – devrique