sql中 one left join more where column_name != value
结果:主表即one,未达到想要的结果,即未筛选掉。
因为more中多条数据对应one,more中个别数据被过滤,则剩余未过滤数据会产生对应的one数据。
本人想要实现more中包含数据满足筛选则对应的one也被过滤。
请大神帮忙解答,除了使用‘in’还有什么好的方法,使查询速度最快。
结果:主表即one,未达到想要的结果,即未筛选掉。
因为more中多条数据对应one,more中个别数据被过滤,则剩余未过滤数据会产生对应的one数据。
本人想要实现more中包含数据满足筛选则对应的one也被过滤。
请大神帮忙解答,除了使用‘in’还有什么好的方法,使查询速度最快。
解决方案 »
- 紧急求救!MsSQL存储过程转MySQL存储过程问题!
- mysql压力测试工具
- mysql存储管理问题?
- 急:为什么创建视图的时候有UNION就提示语句有错误
- JDBC连接MYSQL数据库又乱码(在线等)
- ERROR 1044: Access denied for user: ''@'localhost' to database 'testdb'
- SELECT TOP 3 * FROM article 。我想提取前三条记录,为什么不对呢?
- 多表查询问题!!!!!!!!!
- 如何把图片路径存入到mysql
- hanlderscoket安装配置make时出问题
- 请问sqlserver里面怎么将字符串作为列名进行子查询?
- mysql递归查询统计
以上,TABLE_A就是您说的一,TABLE_B,就是多。ON后的B.*** = A.***,是A和B的关联逻辑。WHERE后的,如果不满足,就不会被显示。
您的描述,我觉得应该增加WHERE后的内容。
比如 部门表department 员工表employee
查询部门和部门下的所有员工:
SELECT * FROM department d LEFT JOIN employee e ON d.id = e.did;查询不是员工Tom所在的部门及部门下的员工:
SELECT * FROM department d LEFT JOIN employee e ON d.id = e.did WHERE e.name != 'Tom';但是结果集里还是有部门1,mybatis看到部门1,还是会创建一个实例。我想得到的结果是,没有部门1,只剩下部门2。
查询包含‘Tom’的部门id,然后在查询部门时将id过滤掉。
查询'Tom'的部门:SELECT did FROM employee WHERE NAME = 'Tom';
查询部门:SELECT * FROM department d LEFT JOIN employee e ON d.id = e.did WHERE d.id NOT IN (SELECT e.did FROM employee e WHERE e.name = 'Tom');