SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据===SELECT ID,NAME FROM A WHERE  true
不就是选择全部吗》?? 
 
矢志不渝 11:53:59
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
不懂
表A
ID NAME
1    A1
2    A2
3  A3表B
ID AID NAME
1    1 B1
2    2 B2
3    2 B3表A和表B是1对多的关系 A.ID => B.AIDSELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据  
 
大师 11:54:48
 (SELECT * FROM B WHERE B.AID=1) 这个为真
大师 11:54:59
那么where为真
大师 11:55:03
那么 有数据
矢志不渝 11:55:15
SELECT ID,NAME FROM A WHERE EXISTS (true)
  
 
矢志不渝 11:55:20
不就是全部吗? 
 
大师 11:55:27
是的呀 
矢志不渝 11:55:39
SELECT ID,NAME FROM A  
 
矢志不渝 11:55:48
不就是三条数据吗? 
 
大师 11:56:11SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2这个是这个
大师 11:56:14
不一样的
矢志不渝 11:56:41
那上面的解释就有问题了 
 
大师 11:56:54
。。哪里有问题了
大师 11:57:07
哪句话
矢志不渝 11:57:36
(SELECT * FROM B WHERE B.AID=1) 这个为真SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
等于 SELECT ID,NAME FROM A WHERE EXISTS (true) 
 
矢志不渝 11:57:47
肯定三行 
 
大师 11:57:55
。。本来就是三行啊
大师 11:58:23
  可是问题不是 和你描述的一样 
大师 11:58:38SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2这里本来就是2行
大师 11:58:47
你没理解。。
矢志不渝 11:58:51
您学一下计算机的执行 
 
矢志不渝 11:59:01
step1
 
 
矢志不渝 11:59:06
step2
 
 
矢志不渝 11:59:08
.. 
 
大师 11:59:17
他是2个表关系的
大师 11:59:22
不是你这么单独看的
大师 11:59:35
(SELECT * FROM B WHERE A.ID=B.AID)
大师 11:59:37
看这句 
大师 12:00:06
是从外面的表里 取出 A.ID 放进去 和B表比 如果有 说明 A表这条记录是对的 就取出来 
大师 12:00:14
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
大师 12:00:17
也就是这句
大师 12:00:33
然后 再从A表 拿第二条 A.AID=2的 
大师 12:00:43
不是这么单纯看的 是有联系的
矢志不渝 12:00:46
计算机如何扫描的 
 
大师 12:01:21
从A表取一条记录 遍历B表 对比B,AID和A.AID 
大师 12:01:26
找到了 就返回真 
大师 12:02:54
比较的方法就是 通过A.ID 和B.AID
大师 12:03:00
OK?
矢志不渝 12:03:17
哦,a是外层b是内层吧 
 
大师 12:04:59
找到了 就返回真 
矢志不渝  12:01:58
哦,a是外层b是内层吧 
别睡了可以么  12:02:08
。。也可以这么说 
矢志不渝 12:05:22
哦,a是外层b是内层吧 
 
矢志不渝 12:05:34
我这边网络太差 
 
大师 12:05:37
我说了 可以这么理解 你问N次了。。
矢志不渝 12:05:41
ok 
 
大师 12:02:08
。。也可以这么说 
大师 12:02:33
然后继续从A表下一条记录 
大师 12:03:31
这句话 等价于
select a.* from a join b on a.id=b.aid
大师 12:02:54
比较的方法就是 通过A.ID 和B.AID
大师 12:02:23
从A拿条记录 再去跟B比 比好了 返回真假 
大师 12:04:40
你可以这么理解 
大师 12:04:44
我不是 早回答你了么
矢志不渝 12:06:13
ok 
 
矢志不渝 12:06:27
现在我这边网络太差了e 
 
大师 12:06:33

矢志不渝 12:07:06
上帝说,您应该知道真相,真相使您自由 
 
矢志不渝 12:07:08
ths 
 
大师 12:07:15
。不客气
矢志不渝 12:07:54
吃完饭再欣赏一下估计就真ok了 
 
大师 12:08:00

矢志不渝 12:56:03
终于懂了 
 
矢志不渝 12:57:46
终于懂了
等下散个分 
 
大师 12:58:16


解决方案 »

  1.   


    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据===SELECT ID,NAME FROM A WHERE  true
    不就是选择全部吗》??矢志不渝 11:53:59
    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
    不懂
    表A
    ID NAME
    1    A1
    2    A2
    3  A3表B
    ID AID NAME
    1    1 B1
    2    2 B2
    3    2 B3表A和表B是1对多的关系 A.ID => B.AIDSELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
    执行结果为
    1 A1
    2 A2
    原因可以按照如下分析
    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
    --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
    --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据 大师 11:54:48
     (SELECT * FROM B WHERE B.AID=1) 这个为真
    大师 11:54:59
    那么where为真
    大师 11:55:03
    那么 有数据
    矢志不渝 11:55:15
    SELECT ID,NAME FROM A WHERE EXISTS (true)
     矢志不渝 11:55:20
    不就是全部吗?大师 11:55:27
    是的呀
    矢志不渝 11:55:39
    SELECT ID,NAME FROM A 矢志不渝 11:55:48
    不就是三条数据吗?大师 11:56:11SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
    执行结果为
    1 A1
    2 A2这个是这个
    大师 11:56:14
    不一样的
    矢志不渝 11:56:41
    那上面的解释就有问题了大师 11:56:54
    。。哪里有问题了
    大师 11:57:07
    哪句话
    矢志不渝 11:57:36
    (SELECT * FROM B WHERE B.AID=1) 这个为真SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    等于 SELECT ID,NAME FROM A WHERE EXISTS (true)矢志不渝 11:57:47
    肯定三行大师 11:57:55
    。。本来就是三行啊
    大师 11:58:23
      可是问题不是 和你描述的一样
    大师 11:58:38SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID)
    执行结果为
    1 A1
    2 A2这里本来就是2行
    大师 11:58:47
    你没理解。。
    矢志不渝 11:58:51
    您学一下计算机的执行矢志不渝 11:59:01
    step1
    矢志不渝 11:59:06
    step2
    矢志不渝 11:59:08
    ..大师 11:59:17
    他是2个表关系的
    大师 11:59:22
    不是你这么单独看的
    大师 11:59:35
    (SELECT * FROM B WHERE A.ID=B.AID)
    大师 11:59:37
    看这句
    大师 12:00:06
    是从外面的表里 取出 A.ID 放进去 和B表比 如果有 说明 A表这条记录是对的 就取出来
    大师 12:00:14
    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
    大师 12:00:17
    也就是这句
    大师 12:00:33
    然后 再从A表 拿第二条 A.AID=2的
    大师 12:00:43
    不是这么单纯看的 是有联系的
    矢志不渝 12:00:46
    计算机如何扫描的大师 12:01:21
    从A表取一条记录 遍历B表 对比B,AID和A.AID
    大师 12:01:26
    找到了 就返回真
    大师 12:02:54
    比较的方法就是 通过A.ID 和B.AID
    大师 12:03:00
    OK?
    矢志不渝 12:03:17
    哦,a是外层b是内层吧大师 12:04:59
    找到了 就返回真
    矢志不渝  12:01:58
    哦,a是外层b是内层吧
    别睡了可以么  12:02:08
    。。也可以这么说
    矢志不渝 12:05:22
    哦,a是外层b是内层吧矢志不渝 12:05:34
    我这边网络太差大师 12:05:37
    我说了 可以这么理解 你问N次了。。
    矢志不渝 12:05:41
    ok大师 12:02:08
    。。也可以这么说
    大师 12:02:33
    然后继续从A表下一条记录
    大师 12:03:31
    这句话 等价于
    select a.* from a join b on a.id=b.aid
    大师 12:02:54
    比较的方法就是 通过A.ID 和B.AID
    大师 12:02:23
    从A拿条记录 再去跟B比 比好了 返回真假
    大师 12:04:40
    你可以这么理解
    大师 12:04:44
    我不是 早回答你了么
    矢志不渝 12:06:13
    ok矢志不渝 12:06:27
    现在我这边网络太差了e大师 12:06:33

    矢志不渝 12:07:06
    上帝说,您应该知道真相,真相使您自由矢志不渝 12:07:08
    ths大师 12:07:15
    。不客气
    矢志不渝 12:07:54
    吃完饭再欣赏一下估计就真ok了大师 12:08:00

    矢志不渝 12:56:03
    终于懂了矢志不渝 12:57:46
    终于懂了
    等下散个分大师 12:58:16