举例: 等级  铺号  占用否
      一等   3      未
      二等   1      占用
      二等   2      未
      二等   3      未
      
想要实现 查找到二等未占用的最小铺号 并将其替换成占用状态 ,急求实现步骤!!

解决方案 »

  1.   

    如果你的表中有ID号
    则可以用下面的方法实现:
    update table1 set 占用否='占用' 
    where id in (select id, min(铺号) from table1 where 等级='二等' and 占用否='未')
      

  2.   

    update tmptest set 占用否='占用' 
    from (select 等级, 占用否, min(铺号) as 铺号 from tmptest where 等级='二等' and 占用否='未' 
    group by 等级, 占用否) x 
    where tmptest.等级=x.等级 and tmptest.铺号=x.铺号 and tmptest.占用否=x.占用否
      

  3.   

    可是interbase数据库不能执行呀??
      

  4.   

    出现什么错误?(可能interbase 不支持这样的sql语法)不能一下子execute?
    那就分两步吧,先select 再 update.
      

  5.   

    UPDATE tablename SET 占用否='占用' 
    WHERE 等级='二级' AND 占用否='未' AND 铺号=(SELECT MIN(铺号) FROM tablename WHERE 等级='二级' AND 占用否='未')这样的语句interbase应该能够执行的.
      

  6.   

    update tablename set 占用否='占用'
    from tablename a
    right join (
    select 等级,min(铺号) as 铺号,占用否 
    from tablename 
    where 等级='二' and 占用否='未'
    ) b 
       on a.等级=b.等级 and a.铺号=b.铺号 and a.占用否=b.占用否
      

  7.   

    我写我的出来!
    UPDATE A
    SET 占用否 = '占用'
    WHERE (占用否 = '未') AND (等级 = '二等') AND (铺号 =
              (SELECT MIN(铺号) AS 最小铺号
             FROM A
             WHERE (占用否 = '未') AND (等级 = '二等') AND (占用否 = '未') AND 
                   (等级 = '二等')))WinXp Pro+Sp2+SQL Server 2000通过