假设一个表中四个字段field1、field2、field3、timestamp
时间戳是我插入这条记录时记下的时间我想选出第三个字段的最新的值,并且同时满足field1和field2的条件
或者说成:满足field1和field2条件前提下的field3的最新的值
或者说成:选出这样一条记录,这条记录满足field1和field2条件的一些条件,并且是最新插入的谢谢!

解决方案 »

  1.   

    修改:
    或者说成:选出这样一条记录,这条记录满足field1和field2的一些条件,并且是最新插入的 
      

  2.   

    首先timestamp能唯一标识一条记录,因为不存在两条同时插入的记录(mysql不允许吧?)。
    不知道这个对不对?
    select field3 from tab where timestamp=
    (
        select max(timestamp) from (select * from tab where field1="something" and field2="something";);
    );
      

  3.   

    select field3
    from tab 
    where field1='something' and field2='something'
    order by timestamp desc 
    limit 1;
      

  4.   

    请问limit 1是用来保证sql语句只返回一行记录的吗?否则就不止一行了是吗?
      

  5.   

    请问limit 1是用来保证sql语句只返回一行记录的吗?否则就不止一行了是吗? 是的,  limit 1 是告诉MYSQL仅输出一行即结束。
    ·         LIMIT子句可以被用于限制被SELECT语句返回的行数。LIMIT取一个或两个数字自变量,自变量必须是非负的整数常数(当使用已预备的语句时除外)。
    使用两个自变量时,第一个自变量指定返回的第一行的偏移量,第二个自变量指定返回的行数的最大值。初始行的偏移量为0(不是1):mysql> SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15
    为了与PostgreSQL兼容,MySQL也支持LIMIT row_count OFFSET offset语法。如果要恢复从某个偏移量到结果集合的末端之间的所有的行,您可以对第二个参数是使用比较大的数。本语句可以恢复从第96行到最后的所有行:mysql> SELECT * FROM tbl LIMIT 95,18446744073709551615;
    使用1个自变量时,该值指定从结果集合的开头返回的行数:mysql> SELECT * FROM tbl LIMIT 5;     # Retrieve first 5 rows
    换句话说,LIMIT n与LIMIT 0,n等价。