SELECT * From Table1
WHERE
   (Column1 = SELECT MAX(Colunm1) FROM Table1) OR (Column1 IS NULL)
如果这样写会返回最大值和一个空值(2行结果)。如果我想返回NULL或者最大值怎么办呢?(只要一行结果)

解决方案 »

  1.   

    SELECT top 1 * 
    From Table1
    WHERE
       (Column1 = SELECT MAX(Colunm1) FROM Table1) OR (Column1 IS NULL)
    --或set rowcount 1SELECT * From Table1
    WHERE
       (Column1 = SELECT MAX(Colunm1) FROM Table1) OR (Column1 IS NULL)
      

  2.   

    多谢老兄,但是其实是很多表的结合,不能使用第一种方案,这样只返回一条数据.
    第2各方案好像不能在View里使用。
      

  3.   

    简单的说,我只想返回一条最大数据,如果有返回最大数据,如果没有(null)就返回空值。MAX只能返回最大值,不能返回空值。
      

  4.   

    SELECT top 1 * 
    From Table1
    order by Column1 desc
      

  5.   

    top好像解决不了问题,因为是很多表的join,而且有三个Column需要取最大值。top1只返回一行数据。
      

  6.   

    select max (case when ISNUMERIC(Colunm1)=1 then Colunm1 else null) from Table1
      

  7.   

    select max (case when ISNUMERIC(Colunm1)=1 then Colunm1 else null) from Table1
    有错误
      

  8.   

    create table tablenull
    (
      id int ,
    varstr  varchar(10)
    )insert into tablenull
    select '5', 'cc' union all select 
    '1','dd' union all select 
     '', 'dd'
    select max (case when  id =null  then null  else id end ) from tablenull
      

  9.   

    create table tablenull
    (
     id varchar(10),
    varstr  varchar(10)
    )
    insert into tablenull
    select '5', 'cc' union all select 
    '1','dd' union all select 
     'null', 'dd'select max (case when  id =null  then null  else id end ) from tablenull
      

  10.   

    SELECT * From Table1
    WHERE
       (isnull(Column1,'') = SELECT MAX(isnull(Colunm1,'')) FROM Table1)isnull 转换成 '' 可以嘛?这样就可以用=号进行比较了
      

  11.   

    这个是我的示例:############################################################################################SELECT table1.id, table2.mydate
    FROM table1 LEFT OUTER JOIN table2 ON table1.id = table2.id
    WHERE table2.id = (SELECT MAX(mydate) AS Expr1 FROM table2 AS table2_1 WHERE id = table1.id)问题:如果在table2里面没有table1的id,那么结果就什么都不能返回!我想要的结果是:返回table1的所有id,和table2里面的mydate最大值,如果table2里没有这个id,则返回空值NULL,但是这行的id 还是要的,只不过mydate列null!
      

  12.   

    --try
    select id,isnull(select max(mydate) from table2 where id=a.ID,null) as mydate 
    from table1 a
      

  13.   

    最大值:
    SELECT  isnull((SELECT MAX(Colunm1) FROM Table1 where table1.column1=t.Colunm1),null) as value From Table1 as t
    WHERE
       
      

  14.   


    SELECT  isnull((SELECT MAX(Colunm1) FROM Table1 where table1.column1=t.Colunm1),null) as value From Table1 as t
      

  15.   

    select id,isnull(select max(mydate) from table2 where id=a.ID,null) as mydate 上面的写法可以解决这个问题,但是如果table2还有一列name,并且table3具有重复id,就有新问题了。比如:id, mydate, name
    1 2004 A
    1 2005    B
    1 2007 C
    1 2006 D
    如果按照上面的写法,那么将返回:
    id, mydate, name
    1 2007 A
    1 2007    B
    1 2007 C
    1 2007 D我只想要一行结果,即mydate最大值的那行结果:
    1 2007 C
      

  16.   

    --這樣不是可以了嗎?
    SELECT table1.id, mydate=(select max(mydate) from table2 where id=table1.id)
    FROM table1 LEFT OUTER JOIN table2 ON table1.id = table2.id
      

  17.   

    SELECT table1.id, table2_1.mydate
    FROM table1 LEFT OUTER JOIN
    (select id,MAX(mydate) as mydate from table2 group by id ) table2_1
     ON table1.id = table2_1.id 这样试一下
      

  18.   

    lwl0606(寒泉) 的方法可以,但是如果table2还有另一列返回(比如要返回id,mydate,school),那么GroupBy就没法使用了。
      

  19.   

    这样试试
    如果要返回最大mydate 对应 的school :
    SELECT table1.id, table2_1.mydate,table2_2.school
    FROM table1 LEFT OUTER JOIN
    (select id,MAX(mydate) as mydate from table2 group by id ) table2_1
     ON table1.id = table2_1.id 
    inner join table2 table2_2  ON table2_1.id = table2_2.id  and table2_1.mydate = table2_2.mydate