0

我有这张桌子,需要帮助:

Friends

  • My_E_Mail( VARCHAR) 和
  • Friends_E_Mail( VARCHAR)

这些是一些示例值:

alester@pam.com carl@pam.com
alester@pam.com greg@pam.com
alester@pam.com jude@pam.com

我需要做的是选择一个My_E_MailFriend_E_Mail不匹配我?在 SQL Server 2008 中使用的插入使用的参数。

例如:

select Friend_E_Mail
From Friends 
WHERE Friend_E_Mail NOT IN (?)

我想要做的是显示每个人的朋友列表。例如,alester 有 3 个朋友,但其他每个人只有一个朋友是 alester。

我也无法创建另一个表。

任何帮助,将不胜感激。

4

2 回答 2

1

也许 UNION 是您需要的:

declare @email varchar(50)
set @email = ?

SELECT
    Friend_E_Mail as email
FROM    
    Friends 
WHERE 
    My_E_Mail = @email
    and Friend_E_Mail <> @email
UNION
SELECT 
    My_E_Mail as email
FROM 
    Friends 
WHERE 
    Friend_E_Mail = @email
    and My_E_Mail <> @email

此代码将为 alester@pam.com 返回三行,但其他三行仅返回一行。

请注意,UNION 只会返回 DISTINCT 行。如果您需要保留重复项,请使用 UNION ALL。此外,如果您提前知道结果将是不同的,请使用 UNION ALL,以节省 DISTINCT 带来的性能成本。

于 2013-05-13T19:21:39.447 回答
0

下面的查询返回整行(不仅仅是 1 个字段)。如果您需要的基本逻辑匹配,则可以对其进行修改以仅生成具有CASE - WHEN结构的单个列。

select *
From Friends 
WHERE My_E_Mail = ? OR Friend_E_Mail = ?
于 2013-05-13T18:05:56.760 回答