1

首先,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。也许我累了.. 或者变量有问题.. 如果我必须打赌我选择第一个选项。

4

1 回答 1

1

这背后的想法是在subqueryusingMAX函数中获取最近的日期,并将其加入到 tableA 和 tableB 上。尝试这个,

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`
于 2012-10-11T01:12:07.037 回答