我有这张桌子,需要帮助:
Friends
:
My_E_Mail
(VARCHAR
)AND Friends_E_Mail
(VARCHAR
)以下是一些示例值:
alester@pam.com carl@pam.com
alester@pam.com greg@pam.com
alester@pam.com jude@pam.com
我需要做的是选择与我在SQL Server 2008中使用My_E_Mail
插入的参数不匹配的Friend_E_Mail
或?
。
例如:
select Friend_E_Mail
From Friends
WHERE Friend_E_Mail NOT IN (?)
我想要做的是显示每个人的朋友列表。例如,alester有3个朋友,但是其他人只有一个朋友只有alester。
此外,我无法创建另一个表。
任何帮助将不胜感激。
答案 0 :(得分: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附带的性能成本。
答案 1 :(得分:0)
以下查询返回整行(不只是1个字段)。如果您需要的基本逻辑匹配,则可以修改它以仅生成具有CASE - WHEN
结构的单个列。
select *
From Friends
WHERE My_E_Mail = ? OR Friend_E_Mail = ?