2 han3ying1jun8 han3ying1jun8 于 2014.09.23 11:06 提问

not exists 里面用and 查询不到数据

SELECT t1.TBB,t2.ID FROM (SELECT DISTINCT tb.ID tbb FROM TESTB tb) t1,TESTA t2
WHERE NOT EXISTS(SELECT 1 FROM TESTB tb2 WHERE tb2.ID||tb2.ID1=t1.TBB||t2.ID )
ORDER BY t1.TBB,t2.ID

这样是可以的

SELECT t1.TBB,t2.ID FROM (SELECT DISTINCT tb.ID tbb FROM TESTB tb) t1,TESTA t2
WHERE NOT EXISTS(SELECT 1 FROM TESTB tb2 WHERE tb2.ID=t1.TBB AND tb2.ID1=t2.ID )
ORDER BY t1.TBB,t2.ID

这样就不行
问了很多人一直在说||的事情。。。。

1个回答

fanxue820
fanxue820   2014.09.23 13:16

||是字符串连接,tb2.ID||tb2.ID1=t1.TBB||t2.ID意思是:tb2.ID和tb2.ID1连接后的字符串和t1.TBB和t2.ID连接后的字符串相等。并不意味着tb2.ID=t1.TBB和tb2.ID1=t2.ID
比如tb2.ID=字符123; tb2.ID1=串456 ;tb2.ID||tb2.ID1就是:字符123串456
如果t1.TBB||t2.ID连接后为:字符123串456 就可以
比如t1.TBB=字符;t2.ID=123串456 t1.TBB||t2.ID就是:字符123串456
不知道你明白吗?

han3ying1jun8
han3ying1jun8 TESTB中数据写 a,1 a,2 b,2 b,3 b,4
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 TESTA中数据就写1,2,3,4
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 create table TESTB ( ID VARCHAR2(30), ID1 VARCHAR2(30) )
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 create table TESTA ( ID VARCHAR2(30) )
接近 4 年之前 回复
fanxue820
fanxue820 你能不能把建表的语句发给我,我试一试。
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 这样是可以的 所以非常奇怪 问了很多大神了。。
接近 4 年之前 回复
fanxue820
fanxue820 我也不知道到了,你把where后面你的东西去掉,能不能查出数据呢?
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 无论是exists和not exists都是查不到的
接近 4 年之前 回复
han3ying1jun8
han3ying1jun8 这2个都是我写的 其实我就是想问 你不要看||那种 我现在想知道另外一种and那个为什么查不到数据,
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
sql 中 not in 或者 not exists 查不出数据
可能原因:B表中存在NULL值 例子: 1、查不出数据 not in select name from a where name not in (select distinct name from b )   not exists  select name from a where  not exists (select distinct name from b  ) 
oracle查询语句中的exists 和in 的详细用法
<br />举两个例子:<br />例子1:select ID from A where ID not in(select AID from B) 例子2:select ID from A where not exists(select AID from B where AID=A.ID)<br />两个例子的查询结果是一样的,都是查询A中ID不存在于B表中的所有数据,是筛选了A中的数据的结果集<br />其实明白了一种用法再去理解另一个是有难度的,比如我先是会用了in的用法 再接触exists的时候 就
数据库 EXISTS的用法
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在。 语法: EXISTS subquery 参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型: Boolean 如果子查询包含行,则返回 TRUE
Spring Boot JPA Repository之诡异的existsBy查询方法失效问题
引言: Spring Boot号称微服务的利器,在结合了Spring Data与JPA之后,更是如虎添翼,开发快速的不像话,本文将讲述一个关于JPA中一个诡异问题的诊断分析过程以及修复方法。 环境介绍 JDK 1.8 Spring 4.2 Spring Boot 1.5.9 问题描述 在Spring Data中的Repository接口中创建了一个检查数据是否存在的接口方法:
数据库查询函数exists和in的简单用法
一、in和exists函数简介:in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)            select * from A where cc in (select cc from B);效率低,用到了A表上cc...
Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join
在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(inner join,left join 或者 right join)。 看下面的数据,我们准备选择出在depart_info中的pid在user_info中不存在的depart_信息。 有表1
MySQL中exists与in的使用 以及查询效率比较
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为 false 如下:
exists子查询真的就比连接查询慢吗?
问题前面有篇文章in型子查询的陷阱,里面给出的案例体现的是in型子查询的效果比连接查询慢,今天我们来看看另一个例子,来看看exist子查询真的就比连接查询慢吗?案例商品表:goods 栏目表:category 查询出包含商品的栏目。连接查询select category.cat_id,cat_name from category inner join goods on category.cat_
mysql使用exists进行查询
参考:http://blog.csdn.net/gucapg/article/details/16839587   1、exists的返回结果是bool型,只有true或者false 如 SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE e.a_id='6588' ),
Mysql 查询in(str)查询不到数据
你想象的是这样的SELECT * from tb_permissions_module where module_code in ( '1001' , '1002'  );实际上是这样的SELECT * from tb_permissions_module where module_code in ( '1001,1002'  );这种方法和前面输出结果一样,不用做字符串切割最后一位的逗号,更简洁...