我正在尝试为In_Column
='X'和{{Item_ID
='X'找到每个Item_Table
(此处为relational_id)具有不同或唯一Timestamp
值的所有单独行对于此不同的In_Column
+ Item_ID
+ Item_Table
,行的1}}是最高的,但低于提供的值。
sample_table
In_Column End_Value Item_Table Item_ID Timestamp
----------------------------------------------------------
Length 3 Pipe 3 2016-07-29 09:00:00
Length 2 Pipe 3 2016-07-30 09:00:00
Length 5 Pipe 4 2016-07-30 11:00:00
Kg 12 Pipe 3 2016-07-29 09:00:00
Kg 25 Steel 1 2016-07-29 09:00:00
如果提供的日期是当前时间且Item_Table ='Pipe',那么理想的结果
In_Column End_Value Item_Table Item_ID Timestamp
----------------------------------------------------------
Length 2 Pipe 3 2016-07-30 09:00:00
Length 5 Pipe 4 2016-07-30 11:00:00
Kg 12 Pipe 3 2016-07-29 09:00:00
排序并不重要,因为我将在获取之后将返回(在表上有很多匹配的行)转换为数组。
很抱歉没有提供示例查询,我已经使用了一些连接的LEFT JOIN,但是它们的执行时间可以理解的很长,而且结果集并不像预期的那样具体。
答案 0 :(得分:0)
这应该对你有用
SELECT
`t1`.*
FROM
`your_table` `t1`
INNER JOIN
(
SELECT
`Item_ID`,
`In_Column`,
MAX(`Timestamp`) AS `latest`
FROM
`your_table`
WHERE
`Item_Table` = 'Pipe' AND
`Timestamp` < 'Supplied Time'
GROUP BY
`Item_ID`, `In_Column`) `t2`
ON
`t1`.`Item_ID` = `t2`.`Item_ID` AND
`t1`.`In_Column` = `t2`.`In_Column` AND
`t1`.`Timestamp` = `t2`.`latest`
WHERE
`Item_Table` = 'Pipe'
只需用正确的表名替换your_table
。