在不使用变量的情况下选择mysql中的顶行

时间:2012-10-11 01:04:47

标签: mysql

首先,mysql变量在我的系统中不起作用,我不知道为什么,如果是配置问题,我无权尝试修复它,所以我想尝试另一种解决方法我没有使用它们的问题。

假设我有:

Table A
id - auto_increment
job_id - integer
other columns

Table B
date - timestamp
event - integer
A_id - integer (with table A id)

基本上我想为一个特定的job_id选择表A的每一行/每列,但是对于表B中最新事件的每一行我需要多一列。

我曾经在另一个系统中使用变量做过这样的事情,但是没有它们的所有尝试都会失败。

提前感谢任何提示。

PS: 这不是我的问题,但如果有人对我的变量问题感到好奇......

经过很长一段时间,我尝试解决问题后得到了错误的结果,我这样做了:

select if(@p, @p:=@p+1, @p:=1) as cnt, t.any_column from any_table t

并且我的cnt列总是等于1.也许我累了....或者有问题的变量..如果我不得不打赌我选择了第一个选项。

1 个答案:

答案 0 :(得分:1)

这背后的想法是使用subquery函数在MAX中获取最近的日期,并在tableA和tableB上将其加入bach。试试这个,

SELECT  a.*, c.*
FROM    TableA a
        INNER JOIN
        (
            SELECT A_ID, MAX(`DATE`) recentDate
            FROM    TableB
            GROUP BY A_ID
        ) b ON a.ID = b.A_ID
        INNER JOIN TableB c
            ON  b.A_ID = c.A_ID AND
                b.recentDate = c.`DATE`