SELECT MAX(PZID) pzid from cypz 语句不对吗?
cypz是数据表,pzid是其中的一个字段

解决方案 »

  1.   

    SELECT MAX(PZID) from cypz
      

  2.   

    SELECT MAX(PZID) AS [PZID] from cypz
      

  3.   

    SELECT MAX(PZID) pzid from cypz
    不习惯中间不写AS
      

  4.   

    不行啊,还是不能返回值,我用的是access数据库
      

  5.   

    看什么数据库了,我记得有些会说循环引用,起不一样的列名,或fields[0].asstring访问
      

  6.   

    SELECT MAX(PZID) from cypz
    查询出来的PZID就是最大的了,
      

  7.   

    或者
    var
    aa:string;
    begin
    with adoquery1 do
    begin
    close;
    sql.clear;
    sql.add(SELECT MAX(PZID) pzid from cypz);
    open;
    end;
    aa:=adoquery1.fieldbyname('pzid').asstring;
    end;
      

  8.   

    SELECT MAX(PZID) AS PZID from cypz
      

  9.   

    我也遇到这样的问题了,不知道怎么解决,其实大家不用追究sql语句,sql语句是对的,在Access查询视图是可以查询到的,但是就是adoquery1.fieldbyname('pzid').asstring;
    或者是adoquery1.fiels[0].asstring;取到的值都是空的,判断adoquery1.eof/bof都是为false说明纪录不为空。不到大家有没有遇到类似的问题。举例:
    Access 数据库
    表名:table1
    --------------------------------------------------------
     编号       一级编码         二级编码         其它信息
    --------+----------------+---------------+--------------
    0010023 |   001          |   002         |  001003002
    --------+----------------+---------------+--------------
    0030028 |   004          |   002         |  222212312
    --------+----------------+---------------+--------------
    0030021 |   005          |   008         |  222212312
    --------+----------------+---------------+--------------
    0030024 |   003          |   007         |  222212312
    --------+----------------+---------------+--------------
    0030023 |   003          |   007         |  222212312
    --------------------------------------------------------
    我的sql语句是 
    select max(编号) as test from table1 where 一级编码='001' and 二级编码='002'
    adoquery1.Fields[0].asString记录集不为空时可以得到值;但是如果我增加条件
    select max(编号) as test from table1 where 一级编码='001' and 二级编码='002' and 编码 like '001002*'
    记录集不为空得到值是空的,不知道什么原因。
      

  10.   

    编码 like '001002*' 是什么意思?
    应该是
    编码 like '001002%'吧?
      

  11.   

    好了,总找到什么原因了,Access数据库他本身支持 like '001002*',如果同把这个sql语句通过ado传递Access数据库就不是like '001002*'本身直接执行结果就不一样了恰恰相反,所以通过ado传递like '001002%'就等于在Access本身执行的like '001002*'。也就是通过ado和不经过ado的like语句的通配符是不一样的。
      

  12.   

    SQL Server中*表示一个字符,%表示任意字符
      

  13.   

    语法是对的,
    SELECT MAX(PZID) pzid from cypz
    查询后,pzid作为MAX(PZID)结果的别名显示