LINQ怎样在where子句中用子查询?

问题描述

intuserID=3;select*fromtable1whereuserIDin(selectuserIDfromtable2wheretable2.table1ID=table1.ID)上面的SQL中的where使用了子查询,在LINQ中怎样使用?

解决方案

解决方案二:
本帖最后由 q107770540 于 2014-11-05 15:55:27 编辑
解决方案三:
Irecommendyouusethiscode:varquery=fromt1indb.table1joint2indb.table2ont1.IDequalst2.table1IDwheret2.userID==userIDselectt1;

解决方案四:
在上一个Iquerable对象下继续做一个查询,或者用lambda
解决方案五:
lambda表达式
解决方案六:
比较简单,比较容易阅读的方法:varsubwhere=子查询varquery=fromtintable1wheresubwhere.Any(f=>f==t.userID)selectt;BTW,你这句sql的逻辑有问题吧
解决方案七:
引用5楼wjq的回复:

BTW,你这句sql的逻辑有问题吧

同意。实际上如果sql都不能写成“连接运算”的人,很可能逻辑上经常绕在问题里出不来。
解决方案八:
引用楼主qha_cn的回复:

intuserID=3;select*fromtable1whereuserIDin(selectuserIDfromtable2wheretable2.table1ID=table1.ID)

如果你在学习sql语言,那么你的老师一定要求你把这种查询要写为innerjoin的。
解决方案九:
在HAVING子句中使用子查询过滤数据//查询数据库信息//<returns>方法返回DataTable对象</returns>privateDataTableGetStudent(){stringP_Str_ConnectionStr=string.Format(//创建数据库连接字符串@"server=WIN-GI7E47AND9RLS;database=db_TomeTwo;uid=sa;pwd=");stringP_Str_SqlStr=string.Format(//创建SQL查询字符串@"SELECT所在学院,学生姓名,年龄,(SELECTAVG(年龄)FROMtb_Student)AS平均年龄FROMtb_StudentGROUPBY所在学院,学生姓名,年龄HAVING年龄>(SELECTAVG(年龄)FROMtb_Student)");//codego.net/SqlDataAdapterP_SqlDataAdapter=newSqlDataAdapter(//创建数据适配器P_Str_SqlStr,P_Str_ConnectionStr);DataTableP_dt=newDataTable();//创建数据表P_SqlDataAdapter.Fill(P_dt);//填充数据表returnP_dt;//返回数据表}
解决方案十:
intuserID=3;select*fromtable1whereuserIDin(selectuserIDfromtable2wheretable2.table1ID=table1.ID)varquery=fromt1intable1joint2intable2onnew{tableId=t1.ID,t1.userID}equalsnew{tableId=t2.table1ID,t2.userId}selectt1;帮你改成表连,问题是你这句sql语句本身就有问题吧?
解决方案十一:
sql写法+lamb写法,妥妥的……sql写法加sql写法其实也是可以的

时间: 2024-10-23 02:40:15

LINQ怎样在where子句中用子查询?的相关文章

MySQL的子查询中FROM和EXISTS子句的使用教程_Mysql

FROM 子查询FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据.FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表必须有一个名称,因此 AS name 是必须的.FROM 子查询也称为衍生数据表子查询. FROM 子查询实例 table1: s1 s2 1 5 2 12 3 20 FROM 子查询 SQL

【MySQL】子查询之一

MySQL 从版本4 开始支持 SQL 标准要求的所有子查询格式和操作,同时扩展了特有的几种特性.本文会介绍子查询的类型以及相关的注意点. 一 什么是子查询     子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用.如: SELECT * FROM t1  WHERE vid in  (SELECT  vid FROM t2); 二 MySQL 子查询分类       根据子查询的返回数据形式,mysql 子查询可以分为以下几类: a  标量子查询      

性能优化之查询转换 - 子查询类

子查询,是SQL中常见的一种写法.对于优化器来说,子查询是较难优化的部分.Oracle提供了多种方式,对子查询进行查询转换. 一.子查询推进 子查询推进(又称子查询推入)是指优化器将子查询提前进行评估,使得优化器可以更早地介入优化以获得更优质的执行计划.这个技术可以通过提示PUSH_SUBQ/NO_PUSH_SUBQ控制.下面通过一个示例看看结果. SQL> create table t_users as select * from dba_users; //表已创建 SQL> create

sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询

执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc 逻辑上看着挺对 但是报错: 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效. 只要我们在嵌套子查询视图里面加入: top 100 percent 即可 select * from ( select top 100 p

实例简析SQL嵌套子查询

  实例简析SQL嵌套子查询: 一些初级程序员常常对SQL语法中的子查询,由其对嵌套子查询(子查询中包含一个子查询)的使用比较生疏,本文就此做一个基本讲解,相信新手会有一定收获. 使用子查询的原则 1.一个子查询必须放在圆括号中. 2.将子查询放在比较条件的右边以增加可读性. 子查询不包含 ORDER BY 子句.对一个 SELECT 语句只能用一个 ORDER BY 子句, 并且如果指定了它就必须放在主 SELECT 语句的最后. ORDER BY 子句可以使用,并且在进行 Top-N 分析时

SQL为王:oracle标量子查询和表连接改写

小鱼(邓秋爽) 云和恩墨专家,有超过5年超大型数据库专业服务经验,擅长oracle 数据库优化.SQL优化和troubleshooting 编辑手记:如何提高数据的查询效率是每个人都关注的问题,今天让我们来学习如何合理使用标量子查询和表连接方式来提高查询速度吧~ 之前小鱼就听过了标量子查询,不过对于其中的细节理解还是远远不够,借助一部分资料和自己测试对标量子查询做一点简单的分析和介绍. Oracle允许在select子句中包含单行子查询,这个也就是oracle的标量子查询,标量子查询有点类似于外

update 子查询使用介绍_数据库其它

基础知识 1, 关联子查询和非关联子查询 在非关联子查询中,内部查询只执行一次并返回它的值给外部查询,然后外部查询在它的处理中使用内部查询返回给它的值.而在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次.另外,在关联子查询中是信息流是双向的.外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录.然后,外部查询根据返回的记录做出决策. 如: SELECT o1.CustomerID, o1.OrderID, o1.OrderDate FROM Ord

关于SQL子查询中使用order by的问题

问题描述 最近回头看以前的数据库教材<数据库系统概论>人大 王珊 版的有一段叙述:"需要特别指出的是,子查询的select语句不能使用 order by子句,order by子句只能对最终查询结果排序"但是正好之前练习碰到个场景,就在子句中用了order by ,结果也是正确的.所以我很疑惑,是书上说错了还是什么原因下面是SQLselect userid from (select userid,min(createtime) from LT_BIZORDER t where

MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引

本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法  3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因