2017-10-05 44 views
0

我加入了三张表,我试图显示最新日期,但返回的日期不是最新的。MAX(日期)不回来最新日期

SELECT c.id, c.companyname,c.displayname, c.address1, c.address2, 
c.town, c.postcode,cd.contactname cd.contactphone, cd.contactemail, 
MAX(q.coldate) 
FROM companies c, query q, custd cd 
WHERE c.id = q.id AND q.id = cd.compid 
AND year(q.coldate) >= 2016 
GROUP BY q.companyname; 

我该如何解决这个问题?

+0

您正在接收的输出是什么? – jhenderson2099

+0

我收到日期,但我知道它们不是查询表中的最新日期。 – Niall

+0

'MAX(q.coldate)'返回'q.companyname'分组后的最后日期。你想分组之前的所有行的最新日期,所以? –

回答

0

,如果你想显示你的结果的每一行表格中的最大(日期)(因此同一日期),请尝试以下运行查询之前:运行查询时

select cast(max(coldate) as char) from schema_name.table_name into  
@max_coldate_for_query ; 

将coldate更改为您正在选择的列的列表中的@max_coldate_for_query

+0

这似乎得到最新的查询日期,并显示所有。我试图向每家公司展示属于该公司的最新查询,但谢谢。 – Niall

+0

是否有可能在custd中没有相应的条目?您正在使用内部联接,该联接消除了表custd中没有相应记录的表查询的所有记录。我建议使用'ANSI连接语法,并将第二个连接更改为左连接(查询q和custd cd之间),如果没有问题。 – iLikeMySql