$user是什么意思?子查询在4.1.0开始支持。其他版本可以改写成一个join left语句。

解决方案 »

  1.   

    select b.username,b.userid from course a,course_info b, plan d where a.courseid=b.courseid and a.coursedm=d.planid and a.courseid in (select codeid from user_code where codetype='5' and userid like '3')select b.username,b.userid from course a,course_info b, plan d where a.courseid=b.courseid and a.coursedm=d.planid and a.courseid not in (select codeid from user_code where codetype='5' and userid like '3')
    我也知道用join  left,关键就是不会写。老兄能能帮我转化一下吗?
      

  2.   

    在低的版本中,
    你可以将这个查询拆分成两个,在 MySQl 4.1  中,你可以直接执行这个查询!
    你要别人回答问题,
    也应该将表结构建立的 CREATE TABLE 语句
    与数据插入语句  INSERT INTO 
    帖出来呀,不然回答你的问题,
    我还要来建立表结构,再插入数据,
    烦呀,    :)而你用 MySQl-Front  或 mysqldump.exe 等程序,
    一步操作可以将表结构与数据导出来了!
      

  3.   

    我也在关注此问题,不妨举个例子,表结构:
    表名    t1                              t2
    ----------------------       -------------------
    列名  id    name                 id   name    
    ----------------------       ---------------------
    类型  int   varchar              int  varchar
    ----------------------       --------------------
    内容  1      aa                  1     aa
          2      bb                  2     aa
          3      cc                  3     bb
          4      aa                  4     bb
    ----------------------      ----------------------
    select name from t1 where name in (select name from t2)select name from t1 where name not in (select name from t2)
    如何转换?
      

  4.   

    1. select t2.name from t2 left join t1 on t1.name=t2.name where t1.name is not NULL2. select t2.name from t2 left join t1 on t1.name=t2.name where t1.name is NULL
      

  5.   

    先说1:
    原来的语句执行结果      转换后的
    -----------------------------------
    aa                        aa
    bb                        aa
    aa                        aa
                              aa
                              bb
                              bb
    ---------------------------------
    结果不同,转换不等价
      

  6.   

    第二个更不对了
    我要选出不再t2表中的name,结果你选的就是t2.name
      

  7.   

    sorry,是我解答错误了!我暂时找不到什么适合所有可能性的方法!如果根据你举的例子中所述,选择的所有字段联合是唯一的话,可以用以下语句试试:1. select distinct t1.name, t1.id from t1 left join t2 on t2.name=t1.name where t2.name is NULL2. select distinct t1.name, t1.id from t1 left join t2 on t2.name=t1.name where t2.name is not NULL当然,升级到mysql 4.1,直接使用子查询就行了
      

  8.   

    http://expert.csdn.net/Expert/topic/1929/1929722.xml?temp=.5207636呵呵,感谢lxf_1976(小木)的回复,请到上面的连接里看看吧,顺便接点分,可惜这个帖子不是我开的。
      

  9.   

    同意 lxf_1976(小木) 
    要么你建立一个临时表,
    要么使用子查询,
    不过
    因为目前 MySQL 4.1 还不是稳定版 ,
    所以 ....