SQL Server帮助如何检索非空/空白记录
我是SQL Server新手。任何人都可以根据以下要求帮助检索结果吗 表客户:SQL Server帮助如何检索非空/空白记录,sql,sql-server,Sql,Sql Server,我是SQL Server新手。任何人都可以根据以下要求帮助检索结果吗 表客户: MemberID Name State Active ---------------------------------------- -2000 John Virginia Y -1999 Pearson Texas -1998 David Minnesota NULL -1997 Suraj NewYork -
MemberID Name State Active
----------------------------------------
-2000 John Virginia Y
-1999 Pearson Texas
-1998 David Minnesota NULL
-1997 Suraj NewYork
-1996 Brad NewYork
表OrderPlacement:
要求:从Customer表中检索Memberid,其中Customer表上的Active on为空,OrderPlacement表上所有服务行号记录上的Active字段为空,如果为Memberid的单个orderlineno on OrderPlacement填充了Active字段,则不应检索该字段选中
只能检索memberid-1997和-1998
我的问题是:
SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
AND NOT EXISTS (SELECT op1.memberid Orderplacement op1
WHERE (ISNULL(op1.active, '') <> ''))
提前感谢您的帮助这个怎么样?
它与您的基本相同,但有一些修复
SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
AND NOT EXISTS (SELECT * FROM Orderplacement op1
WHERE c.memberid = op1.memberid and (ISNULL(op1.active, '') <> ''))
您只是忘记了exists语句中的joincorrelation这个构造称为相关子查询。Op忘记了相关条件。还有一个问题,如何在不使用的情况下得到完全相同的结果。看起来它不适合使用。谢谢
SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
AND NOT EXISTS (SELECT * FROM Orderplacement op1
WHERE c.memberid = op1.memberid and (ISNULL(op1.active, '') <> ''))