易截截图软件、单文件、免安装、纯绿色、仅160KB

请问一句SQL怎么理解?

有2个表tableA和tableB, tableA中不重复地定义了cid, tableB中有部分tableA中的cid被调用,也就是说tableB中的cid数量少于tableA.

这句SQL返回的记录数是tableA的数量,而不是tableB的,不过其中的in子句我不能理解,能不能请大大们用文字解释一下?

select * from tableA
where tableA.cid in
(select tableA.cid from tableB)

SQL code:
select * from tableA
where tableA.cid in


其实相当于
select * from tableA
where tableA.cid in tableA.cid


那就是说前一句的(select tableA.cid from tableB)结果相当于tableA.cid?

为什么从子集tableB中选择的结果会是原集tableA中的结果呢?想来应该与tableA.cid有关系,不过这是什么原理?还是有点想不明白.


sql server 没用过。不过感觉上你的子查询select tableA.cid from tableB
会出错。

引用
sql server 没用过。不过感觉上你的子查询select tableA.cid from tableB
会出错。

如果直接执行子查询select tableA.cid from tableB 的确会出错,不过如果是整句查询不会出错,结果数量就是TableA中的记录数

你应该改成
select * from tableA
where tableA.cid in
(select cid from tableB)

个人认为1楼正解。为什么cid是tableA中的?就是一因为你选取的字段对象就是tableA.cid,从表B中选取cid.结果就是在B中出现的A中的Cid.

条件表达式,多了一个in,表示一个数据集包含另一个数据集。

具体原理


相关问答:

关于SQLSERVER底层问题 - MS-SQL Server / 疑难问题

请问一下,外网两台SQLSERVER实例数据传输,有没有采用数据压缩和加密。压缩比是多少,加密是什么加密算法?相关文档哪里可以找到?谢谢


我也想知道!关注此贴!

关注~~

数据库大牛都哪去了啊?
......

SQL如何优化问题 - MS-SQL Server / 疑难问题

今天做了一个存储过程   环境是SQL2000数据库  
大致如下
建立临时表
定义员工游标
        循环员工(属于1个公司)  
        ......

数据以xml格式返回 - MS-SQL Server / 应用实例

从数据库中查询一张表的数据
select 部门,姓名 from tb
如何才能生成下面的xml格式
XML code:
<folder state="unchecked" label="全部">
   <folder state="unchecked&qu ......

SQL clr - MS-SQL Server / 非技术版

想用SQL CLR做如下的存储过程,但是发现报错: 
{由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。} 
而且如果数据从case 1通过时就是正确的,从case 2通过时错误 
并且在c ......

求一SQL - MS-SQL Server / 基础类

tab1 字段:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt
tab2 字段:goodsid,goodskind(商品类型)
tab3 字段:goodskind(商品类型),kindname
结果:
得到商品类型在一段时间 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号