你的语句本身没有任何问题,贴出你这两个表的 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>问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
好,我详细讲述一下问题:有两张表,第一张表 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。以上就是查询的详细环境,实在是不知错误在哪里,还请指教!
字段名区分大小写? 加了引号肯定不对,IN('***'),它把中间的串当成一个值了。 你不妨用``括起来试试: select * from rcjg_info where rcjg_info.`DEPT_ID` IN (select department.`DEPT_ID` from department where department.`DEPT_PARENT` =11)
where dept_parent='11');
Empty set (0.36 sec)mysql>问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
`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。以上就是查询的详细环境,实在是不知错误在哪里,还请指教!
加了引号肯定不对,IN('***'),它把中间的串当成一个值了。
你不妨用``括起来试试:
select * from rcjg_info where rcjg_info.`DEPT_ID` IN (select department.`DEPT_ID` from department where department.`DEPT_PARENT` =11)
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
on a.DEPT_ID=b.DEPT_ID
where b.dept_parent ='11'