从查询的第二个表中过滤最大日期

时间:2014-09-16 13:05:05

标签: mysql sql greatest-n-per-group

我正在尝试从两个表中运行一个查询,一个没有日期,另一个表没有。

我只希望从第二个表中记录最新的日期结果,因为它会使数据不正确。

我在MYSQL中使用以下查询。

$sql = "SELECT acoll.PIECE_NO, odd.FROM_POS
FROM acoll, odd
WHERE acoll.PIECE_NO = odweld.PIECE and odd.DATE IN

    (SELECT
       MAX(DATE)
     FROM
       odd
       )

GROUP BY odd.FROM_POS" ;

它似乎没有给我任何结果,我已经尝试了很多不同的方式几个小时,而且似乎无法破解它,

很抱歉,如果这是一个非常业余的问题,我是mysql和php的新手。

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

一种方法是过滤join

select  *
from    acoll t1
join    odd t2
on      t1.piece_no = t2.piece
join    (
        select  piece
        ,       max(date) as max_date
        from    odd
        group by
                piece
        ) filter
on      filter.piece = t2.piece
        and filter.max_date = t2.date

或相关子查询:

select  *
from    acoll t1
join    odd t2
on      t1.piece_no = t2.piece
where   t2.date = 
        (
        select  max(date)
        from    odd t2_max
        where   t2_max.piece = t2.piece
        )

可以在代码中找到更多解决方案。

答案 1 :(得分:0)

我认为你需要研究的是HAVING条款。

以下是一个例子:

SELECT 
    a.PIECE_NO
    , o.FROM_POS
FROM 
    acoll a
    INNER JOIN odd o ON a.PIECE_NO = o.PIECE 
GROUP BY  
    a.PIECE_NO
    , o.FROM_POS
HAVING 
    o.DATE = MAX(o.DATE)