从另一个表中获取值,其中连接列不是唯一的

时间:2015-05-20 09:24:46

标签: mysql

我有一个SQL查询,我需要从表A中获取大部分列,从表B中获取1列。我使用非唯一值来连接这两个表。

表B中我需要的一列是日期。如何使查询返回表B中找到的多行中的最大日期值(如果它们中的任何一个具有日期)。如果他们都没有约会,我希望它返回null。

这是我的查询的样子

SELECT A.ID,
A.field1,
A.field2,
B.date
FROM TableA A
LEFT JOIN TableB B
ON A.ID = B.ID

现在,它正在回归

ID, field1, field2, date
1   a       a       null
1   a       a       1/1/2014
1   a       a       1/1/2015
2   b       b       null
2   b       b       null
2   b       b       null

我希望它返回的是

ID, field1, field2, date
1   a       a       1/1/2015
2   b       b       null

由于A中的每个ID都返回B中的多行,我只想要具有最大日期的行中的日期值(如果没有包含日期​​值,则为null)。

3 个答案:

答案 0 :(得分:2)

使用MAX和GROUP BY

<Image x:Name="MyImg" Source="{Binding Path=Content}"/>     

答案 1 :(得分:0)

尝试在查询结束时添加GROUP BY A.ID,A.field1,A.field2以获得正确的结果。

答案 2 :(得分:0)

下面也应该有用

SELECT A.ID,
A.field1,
A.field2,
(SELECT MAX(B.date) FROM TableB B   WHERE B.id= A.id GROUP BY id) maxDate
FROM TableA A