sql:='select * from 班级信息表';
     sql:=sql+'where id like ''''+(select id from 专业信息表)+%+''''';     adoquery2.Close;
     adoquery2.SQL.Clear;
     adoquery2.SQL.Add(sql);
     adoquery2.Open;

解决方案 »

  1.   

    你的目的不明确。如果你是需要列出"班级信息表"中ID存在于"专业信息表",应该是    sql:='select * from 班级信息表 where exists (select * from 专业信息表 where 班级信息表.id like 专业信息表.id)';
      

  2.   

    sql:='select * from 班级信息表';
     
    sql:=sql+'where id like '''+(select id from 专业信息表)+'%'' ';
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    adoquery2.Close;
         adoquery2.SQL.Clear;
         adoquery2.SQL.Add(sql);
         adoquery2.Open;
    没问题早点揭帖。
      

  3.   

    更正:    sql:='select * from 班级信息表 where exists (select * from 专业信息表 where 班级信息表.id like 专业信息表.id+''%'')';或:    sql:='select * from 班级信息表 where exists (select * from 专业信息表 where 班级信息表.id like rtrim(专业信息表.id)+''%'')';
      

  4.   

    如果(select id from 专业信息表)是返回多条记录的数据集,还能用like么?
      

  5.   

    另外,“sql:=sql+'where id like '''+(select id from 专业信息表)+'%'' ';”中的“(select id from 专业信息表)”成了Delphi的表达式,错误。
      

  6.   

    感谢楼上的几位朋友,可能是我没说清楚
    其中
       专业信息表.id=010101
       班级信息表.id=01010101
         其中前6位如果相同,表示该班级是该专业的
      

  7.   

    to: nononono(null,null) 请问一下有什么好的解决方法吗?
      

  8.   

    你要求sql语句返回什么结果呀?
    sql:=sql+'where id like ''''+(select id from 专业信息表)+%+''''';
                                 ---------------------------
                                 此处能肯定返回一条记录吗?否则语句不对不知道你要那种结果!
    sql:='select * from 班级信息表 where id in (select id from 专业信息表)';strid := edit.text;
    sql:='select * from 班级信息表 where id in (select id from 专业信息表 where id like '''+strid+'%'')';
      

  9.   

    查询所有属于editid.text的班级:
    sql := 'select * from 班级信息表 where id like ''+editid.text+'%''';
      

  10.   

    sql:=sql+'where id like ''''+(select id from 专业信息表)+%+''''';
                                 ---------------------------
                                 此处能肯定返回多条记录如果把like 改为exists,就不能用通配符了
      

  11.   

    sql:='select * from 班级信息表 where exists (select * from 专业信息表 where 班级信息表.id like rtrim(专业信息表.id)+''%'')';的SQL语句实际是:select * from 班级信息表 where exists (select * from 专业信息表 where 班级信息表.id like rtrim(专业信息表.id)+'%')如果是MSSQLServer, 你用它在查询分析器中执行一下。