从两个SQL表的联接中选择不同的行
我试图通过连接两个表来确定以下内容: 表A:包含由唯一ID组成的1列 TableB:包含多个列,其中一个包含相同的唯一ID集,但也包含一年中每一天的日期列。 例如:从两个SQL表的联接中选择不同的行,sql,ms-access,inner-join,distinct,Sql,Ms Access,Inner Join,Distinct,我试图通过连接两个表来确定以下内容: 表A:包含由唯一ID组成的1列 TableB:包含多个列,其中一个包含相同的唯一ID集,但也包含一年中每一天的日期列。 例如: Table A Unique ID 1 2 3 Table B UniqueID Date Column3 Column4 1 10/11/15 2 10/11/15 1 11/11/15 2 11/11/15 3 11/11/15 我希望查询输出
Table A
Unique ID
1
2
3
Table B
UniqueID Date Column3 Column4
1 10/11/15
2 10/11/15
1 11/11/15
2 11/11/15
3 11/11/15
我希望查询输出具有唯一ID的a表以及它们出现在表B中的第一天。因此,对于唯一1和2,只输出第一个日期,对于唯一3,只输出第二个日期
这可能吗
谢谢考虑到上面的示例,连接部分是不必要的,但是如果您实际上只需要包含在第一个表中的记录,您可以这样做
内部连接
SELECT tb.UniqueID, MIN(DATE) as [Date] FROM [Table B] tb
INNER JOIN [Table_A] ta ON ta.[Unique ID] = tb.UniqueID
GROUP BY tb.UniqueID
我使用了您的表名和列名,尽管命名缺乏一致性,并且表和列中有空格。(就个人而言,我建议在任何SQL实现中都不要这样做,但这是另一个问题。)
如果没有加入,你只需要做
SELECT UniqueID, MIN(DATE) as [Date] FROM [Table B]
GROUP BY UniqueID
考虑到上面的示例,连接部分是不必要的,但是如果您实际上只需要第一个表中包含的记录,则可以像这样执行内部连接
SELECT tb.UniqueID, MIN(DATE) as [Date] FROM [Table B] tb
INNER JOIN [Table_A] ta ON ta.[Unique ID] = tb.UniqueID
GROUP BY tb.UniqueID
我使用了您的表名和列名,尽管命名缺乏一致性,并且表和列中有空格。(就个人而言,我建议在任何SQL实现中都不要这样做,但这是另一个问题。)
如果没有加入,你只需要做
SELECT UniqueID, MIN(DATE) as [Date] FROM [Table B]
GROUP BY UniqueID
这是一个分组依据
:
select uniqueID, min(Date)
from b
group by uniqueID;
您甚至不需要内部联接
,除非b
中缺少一些ID,这是一个分组依据
:
select uniqueID, min(Date)
from b
group by uniqueID;
您甚至不需要内部联接
,除非b
中缺少一些ID,否则如果表A是主表,可能会有一些时候表A中的ID在表b中还没有找到,在这种情况下,您仍然希望输出表A中具有相应日期的所有值(如果没有找到匹配项,则为NULL):
如果表A是您的主表,那么有时可能在表B上找不到表A中的ID,在这种情况下,您仍然希望输出表A中的所有值以及相应的日期(如果未找到匹配项,则为NULL):
打败我+吃我吧+1.