Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从两个SQL表的联接中选择不同的行_Sql_Ms Access_Inner Join_Distinct - Fatal编程技术网

从两个SQL表的联接中选择不同的行

从两个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 我希望查询输出

我试图通过连接两个表来确定以下内容: 表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
我希望查询输出具有唯一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.