在Y类型MySQL的最新插入数据之前查询X类型的最新插入数据

时间:2017-02-04 09:08:11

标签: mysql

我有一个简单的数据

'crossType' [1-8] | 'isLocal' [1-2] | 'dayCross' [int] | TIMESTAMP

我想在'isLocal' = 1的最新插入数据之前找到'crossType' = 2的最新插入数据,然后我的输出为'dayCross'

'crossType' [1-8] | 'isLocal' [1-2] | 'dayCross' [int] | TIMESTAMP

         1        |        1        |         3        | xx:xx:xxxx
         2        |        2        |         5        | xx:xx:xxxx
         5        |        2        |         7        | xx:xx:xxxx
         3        |        1        |         9        | xx:xx:xxxx
         2        |        1        |         10       | xx:xx:xxxx

'crossType'= 2的最新插入数据是

         2        |        2        |         5        | xx:xx:xxxx

然后'isLocal'的最新插入数据= 1

         3        |        1        |         9        | xx:xx:xxxx

我的输出将是 9

此问题的查询语句是什么。

谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

auto_ptr

外部查询将返回最新select dayCross from your_table where isLocal = 1 and timestamp < ( select max(timestamp) from your_table where crossType = 2 ) order by timestamp desc limit 1; ,其dayCross位于timestamp 2的最新timestamp之前(在子查询中找到)。

答案 1 :(得分:0)

您在此查询:

SELECT dayCross FROM testing.new_table
    WHERE isLocal='1' AND `timestamp` <
        (select max(`timestamp`) from testing.new_table where crossType='2')
    ORDER BY `timestamp` DESC LIMIT 1;

你得到最新插入的dayCross与&#39; isLocal&#39;最新插入&#39; crossType&#39;之前的数据= 1 = 2。

以下是数据:

 crossType    isLocal     dayCross    timestamp
    1            1            3    2017-02-04 00:50:00
    2            2            5    2017-02-04 00:40:00
    5            2            7    2017-02-04 00:30:00
    3            1            9    2017-02-04 00:20:00
    2            1           10    2017-02-04 00:10:00