本帖最后由 yjjsmile 于 2010-06-23 20:01:17 编辑

解决方案 »

  1.   

    你的语句本身没有任何问题,贴出你这两个表的 show create table user;show create table department;mysql> Select * from user where user.dept_id in (select dept_id from department
    where dept_parent='11');
    Empty set (0.36 sec)mysql>问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  2.   

    好,我详细讲述一下问题:有两张表,第一张表 department,结构如下:
      `DEPT_ID` int(11) NOT NULL auto_increment,
      `DEPT_NAME` varchar(50) NOT NULL default '',
      `TEL_NO` varchar(50) NOT NULL default '',
      `FAX_NO` varchar(50) NOT NULL default '',
      `DEPT_NO` varchar(200) NOT NULL default '0',
      `DEPT_PARENT` int(11) NOT NULL default '0',
      `DEPT_FUNC` text NOT NULL,
      KEY `DEPT_ID` (`DEPT_ID`),
      KEY `DEPT_NO` (`DEPT_NO`);第二张表:RCJG_INFO,字段分别为:
    `RCJG_ID` int(11) NOT NULL auto_increment,
      `DEPT_ID` int(11) NOT NULL default '0',
      `CHECK_UNIT` varchar(200) default NULL,
      `TYPE_ID` int(4) default NULL,
      `FR` varchar(100) default NULL,
      `CHECK_DATE` varchar(200) default NULL,
      `TEL` varchar(200) default NULL,
      `ADDRESS` varchar(200) default NULL,
      `CHECK_WHO` varchar(200) default NULL,
      `CHECK_RESULT` char(1) default '',
      `CHECK_PROBLEM` text,
      `XQZG_DATE` varchar(200) default NULL,
      `ZGWC_DATE` varchar(200) default NULL,
      `ZGJG` char(1) default '',
      `ZGWT` text,
      `MEMO` varchar(255) default NULL,
      `PROVIDER` varchar(200) default NULL,
      PRIMARY KEY  (`RCJG_ID`),
      UNIQUE KEY `RCJG_ID0` (`RCJG_ID`)在department表中,dept_parent字段代表上级部门,dept_id为每个部门编号,现想从RCJG_INFO表中找到一个大部门中所有小部门的相关记录,我利用Navicat 8 for MySQL进行查询,实际查询语句如下:SELECT * from rcjg_info where rcjg_info.DEPT_ID IN (select department.dept_id from department where department.dept_parent ='11');提示错误:[Err] 1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select department.dept_id from department where department.dept修改查询语句,修改的位置也就是括号中的引号,具体为:
    SELECT * from rcjg_info where rcjg_info.DEPT_ID IN ('select department.dept_id from department where department.dept_parent =11');
    查询成功,但查询结果为0。以上就是查询的详细环境,实在是不知错误在哪里,还请指教!
      

  3.   

    字段名区分大小写?
    加了引号肯定不对,IN('***'),它把中间的串当成一个值了。
    你不妨用``括起来试试:
    select * from rcjg_info where rcjg_info.`DEPT_ID` IN (select department.`DEPT_ID` from department where department.`DEPT_PARENT` =11)
      

  4.   

    提供你的测试数据!   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  5.   

    SELECT a.* from rcjg_info a inner join department b
    on a.DEPT_ID=b.DEPT_ID
    where b.dept_parent ='11'