Sql server 在SQL Server中查找两个不同表的匹配记录

Sql server 在SQL Server中查找两个不同表的匹配记录,sql-server,Sql Server,我有两张表,其中一张是卖家为他正在销售的产品保存的记录。在另一张表中,买家可以节省他们需要购买的东西 我需要从买家表中获取一个用户ID列表(uid字段),该列表与销售表中的特定产品相匹配。这是我写的: select n.[uid] from needs n left join ads(getdate()) a on n.mid=a.mid and a.[year] between n.from_year and n.to_year

我有两张表,其中一张是卖家为他正在销售的产品保存的记录。在另一张表中,买家可以节省他们需要购买的东西

我需要从买家表中获取一个用户ID列表(uid字段),该列表与销售表中的特定产品相匹配。这是我写的:

select n.[uid] 
from needs n 
  left join ads(getdate()) a 
         on n.mid=a.mid 
        and a.[year] between n.from_year and n.to_year 
        and a.price between n.from_price and n.to_price 
        and n.[uid]=a.[uid] 
        and a.pid=n.pid

我需要使用where子句来消除那些不匹配的记录。因为我认为所有这些条件都是用
ON定义的
必须用where子句定义。但是加入至少需要一个关于子句的
。也许我不该加入两张桌子?我能做什么

左连接
连接
之间有一个重要的区别,或者更准确地说,分别是
外部连接和
内部连接

内部联接要求联接的两侧匹配。换句话说,如果您:

  • 有一张代表人的桌子
  • 你还有一张代表汽车的桌子
  • 每辆车都有一个人
  • 并使用
上的
和PersonId连接这些表 使用
LEFT(OUTER)JOIN
将返回所有人,即使是没有汽车的人<代码>内部联接仅返回带车辆的人员


这篇文章可能会有帮助:

请使用
内部连接
,看看这是否符合您的要求。要排列单词,请从查询中删除单词
LEFT
。greattttt。我一直很好奇左连接和内连接的区别。这就是我想要的。我将在回答中详细说明。:)请加上它作为答案。所以我可以选择它作为答案。