SELECT DISTINCT Database1.dbo.tblCustomers.SiteNum
FROM Database1.dbo.tblCustomers
LEFT OUTER JOIN tblWebUsers on tblWebUsers.SiteNum = Database1.dbo.tblCustomers.SiteNum
WHERE **tblWebUsers.ID = '4'**
这将返回与webuser id相关的所有sitenums,但我该如何做相反的事情呢?即返回与webuser id无关的所有站点号 - 我在(4)中没有尝试过,但它只返回所有没有id的webusers站点号...我想从database1
答案 0 :(得分:0)
试试这个:
SELECT DISTINCT Database1.dbo.tblCustomers.SiteNum
FROM Database1.dbo.tblCustomers
WHERE tblWebUsers.ID NOT IN (SELECT tblWebUsers.ID FROM Database1.dbo.tblUsers)
答案 1 :(得分:0)
目前还不清楚相反的情况(我们没有任何样本数据和预期结果可供使用,只有您可以看到您的实际数据库),但我注意到tblWebUsers.ID = '4'
在你的where子句中强制左连接成为内连接。
这可能更接近你想要的东西:
SELECT DISTINCT Database1.dbo.tblCustomers.SiteNum
FROM Database1.dbo.tblCustomers
LEFT OUTER JOIN tblWebUsers on
tblWebUsers.SiteNum = Database1.dbo.tblCustomers.SiteNum and
tblWebUsers.ID = '4'
或者更可编辑成您正在寻找的最终形式。
事实上,我认为这就是你想要的:
SELECT DISTINCT Database1.dbo.tblCustomers.SiteNum
FROM Database1.dbo.tblCustomers
LEFT OUTER JOIN tblWebUsers on
tblWebUsers.SiteNum = Database1.dbo.tblCustomers.SiteNum and
tblWebUsers.ID = '4'
WHERE
tblWebUsers.ID is null
也就是说,您希望找到来自tblCustomers
的行,其中不在tblWebUsers
中有一行ID
等于4.但是,再次,它如果你能更清楚地解释你想要达到的目标,希望有样本数据和预期结果,那会更好。
答案 2 :(得分:0)
试试这个:
SELECT DISTINCT Database1.dbo.tblCustomers.SiteNum
FROM Database1.dbo.tblCustomers
WHERE NOT EXISTS (
SELECT TOP 1 1 FROM tblWebUsers
WHERE tblWebUsers.SiteNum = Database1.dbo.tblCustomers.SiteNum
AND tblWebUsers.ID = @tblWebUsersID
)
@tblWebUsersID是你的参数。