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