请问一句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实例数据传输,有没有采用数据压缩和加密。压缩比是多少,加密是什么加密算法?相关文档哪里可以找到?谢谢 我也想知道!关注此贴! 关注~~ 数据库大牛都哪去了啊? ......
今天做了一个存储过程 环境是SQL2000数据库 大致如下 建立临时表 定义员工游标 循环员工(属于1个公司) ......
从数据库中查询一张表的数据 select 部门,姓名 from tb 如何才能生成下面的xml格式 XML code: <folder state="unchecked" label="全部"> <folder state="unchecked&qu ......
想用SQL CLR做如下的存储过程,但是发现报错: {由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。} 而且如果数据从case 1通过时就是正确的,从case 2通过时错误 并且在c ......
tab1 字段:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt tab2 字段:goodsid,goodskind(商品类型) tab3 字段:goodskind(商品类型),kindname 结果: 得到商品类型在一段时间 ......