【发布时间】:2010-09-30 11:08:28
【问题描述】:
我有两个表:TableA 和 TableB,由 TableA.TableA_Id->1..n
在给定 TableB 的特定条件下,我需要提取 distinct TableA 记录。这是我的第一种方法:
SELECT * FROM TableA A INNER JOIN TableB B ON A.idA = B.IdA AND B.Date = '2009-01-10' ORDER BY A.Id;
这很好,但它并没有给我“不同”的记录。表 B 上的某些记录可能是重复的,因此我可以多次获得相同的记录。
所以我决定执行一个子选择(性能不是问题,因为子选择可能会以最多 20/30 条记录结束):
SELECT * FROM TableA WHERE TableA.Id IN (SELECT DISTINCT IdA FROM TableB WHERE Date = '20090110') 按 TableA.IdA 排序;
这很好用。
现在的问题是:我怎样才能使用 Inner Join 并仍然获得不同的值?这是否可能一次性完成,或者嵌套查询是必须的?我错过了什么?
【问题讨论】:
标签: sql sql-server tsql