表id name
-- ----
1  a
2  b
3  c
4  d
select *
  from tbl
 where name in ('a','b','c')
结果
id name maxFlg
-- ---- -----
1  a    -
2  b    -
3  c    O在这里maxFlg怎么得出来?注意我只查询1~3的. 不查询4.如果我只查询1~2,那么2就的maxFlg就是O了.SQL怎么写?

解决方案 »

  1.   

    select a.*,maxFla=IFNULL(b.c,'') 
    from (select * from tb1 where name in ('a','b','c')) a
    left join (select max(id) as c from tb1 where name in ('a','b','c'))b
    on a.id=b.id
      

  2.   

    select a.*,maxFla=IFNULL(b.c,'0') 
    from (select * from tb1 where name in ('a','b','c')) a
    left join (select max(id) as c from tb1 where name in ('a','b','c'))b
    on a.id=b.c
    改成这样就好了
      

  3.   


    select id,name
      from tbl
     where name in ('a','b','c')
      

  4.   

    select *,if(id=(select max(id) from 表where name in ('a','b','c' )),'O','-') as maxFlg
    from 表
    where name in ('a','b','c')
      

  5.   

    除了这个.
    不用两次条件外还有吗?能不能MAX后的显示多行记录.
    比如
    id name max(id)
    -- ---- -------
    1 a 4
    2 b 4
    3 c 4
    4 d 4可以吗?
      

  6.   


    select *,b.c `max(id)`
      from tbl,(select max(id) as c from tb1 where name in ('a','b','c'))b
     where name in ('a','b','c','d')
      

  7.   

    还是2次where条件啊.
    有像oracle的partion by之类的吗?