首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL操作四

= 我们可以使用in关键字 查询工资最高的员工的所有信息 子查询中返回的是最高工资 select * from emp where sal=(select max(sal) from emp)...,而是一组值,因此使用in select * from t_item_category where id in(select category_id from t_item where category_id...JONES同样工作的员工的所有信息(不包含JONES) where句中可以包含子查询,也可以包含其他的条件,使用and或者or select * from emp where job=(select...,price from t_item from t_item where price>1000) 子查询可以嵌套n层 关联查询 同时查询多张表信息中的字段 同时查询多张表的字段的时候,一定要指定关联关系...,以及与之匹配的商品 这里侧重于查询分类,如果某一个分类中没有商品,那么使用等值连接和内连接就会导致查询不到所有的分类,因此这里可以使用左外连接或者右外连接,以分类所在的表(t_item_category

70610

Oracle数据库学习笔记(七 —— 游标)

当在PL/SQL块中执行查询语句(SELECT)和数据操纵语句(DML)时,Oracle会为其分配一个上下文区(Context Area) 游标是指向上下文区的指针,它为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法...1.1 游标(显示游标) 游标分为显式游标和隐含游标两种 隐含游标用于处理 SELECT INTO和DML语句 显式游标则用于处理SELECT语句返回的多行数据 1.1.1 使用显示游标 -- 定义游标...bulk collect into v_dept_table; close dept_cursor; for i in v_dept_table.first..v_dept_table.last...) 游标for循环简化游标处理 使用游标for循环时,oracle隐含打开游标,提取数据并关闭游标。...; end loop; end; 游标for循环简化游标处理 当使用游标for循环时,可以直接使用子查询。

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PLSQL 游标变量

    游标是静态的,而游标变量是动态的,因为游标变量并不与某个特定的查询相绑定。所以,游标变量可以打开任何类型兼容的查询。其次可以将游标变量作为参数传递给本地和存储子程序。本文主要描述游标变量的使用。...二、游标变量使用的情形     PL/SQL 存储子程序和各种客户端之间可以使用游标变量来传递查询结果,这是游标变量最主要的作用。...2、打开游标变量      当打开游标变量时,则此时游标变量便与特定的SELECT语句关联,执行该查询,标识结果集。使用OPEN FOR可以为不同的查询打开相同的游标变量。...FOR i IN emp_collect.FIRST .. emp_collect.LAST -->输出复合变量中的结果 LOOP DBMS_OUTPUT.put_line...7、使用游标变量的存储过程只能被用作查询块数据源,它不能用于DML块数据源。

    1.3K40

    源码分析 Mybatis 的 foreach 为什么会出现性能问题

    条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一条查询 SQL 是自己写,其他两条是根据别人提供的接口进行查询,刚开始的时候,没有多想,直接使用 in 进行查询...SQL 为 select * from person where 1=1 and id in (1,2,3,4,5) 先来看看它的两个内部类: PrefixedContext 该类主要是用来处理前缀...,如果集合为 map,则index 为key,item为value private String item; // 本次循环的次数 private String index; private...SQL 为: select * from person where 1=1 and id in (#{__frch_item_0}, #{__frch_item_1}, #{__frch_item...所以,到这里,知道了 Mybatis 在解析 foreach 的时候,最后还是解析成了 # 的方式,但是为什么还是很慢呢,这是因为需要循环解析 #{__frch_item_0} 之类的占位符,foreach

    2.4K10

    select count(*)底层究竟做了什么?

    SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。...在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。...执行框架 – 循环: 读取 + 计数 1.1 基本结论 全表扫描,一个循环解决问题。 循环内: 先读取一行,再决定该行是否计入 count。 循环内是一行一行进行计数处理的。...: SELECT id FROM t LIMIT 1; 1271 error= (*qep_tab->read_first_record)(qep_tab); 1272 } 1273...Q:对于SELECT COUNT( * ) FROM t或者SELECT MIN(id) FROM t操作,第一次的读行操作读到的是表 t 中 ( B+ 树最左叶节点 page 内 ) 的最小记录吗?

    1.2K40

    select count(*) 底层究竟做了什么?

    SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。...在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。...执行框架 – 循环: 读取 + 计数 1.1 基本结论 全表扫描,一个循环解决问题。 循环内: 先读取一行,再决定该行是否计入 count。 循环内是一行一行进行计数处理的。...: SELECT id FROM t LIMIT 1; 1271 error= (*qep_tab->read_first_record)(qep_tab); 1272 } 1273...Q:对于SELECT COUNT( * ) FROM t或者SELECT MIN(id) FROM t操作,第一次的读行操作读到的是表 t 中 ( B+ 树最左叶节点 page 内 ) 的最小记录吗?

    1.3K30

    select count(*) 底层究竟做了什么?

    SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。...在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。...执行框架 – 循环: 读取 + 计数 1.1 基本结论 全表扫描,一个循环解决问题。 循环内: 先读取一行,再决定该行是否计入 count。 循环内是一行一行进行计数处理的。...JOIN对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...Q:对于SELECT COUNT( * ) FROM t或者SELECT MIN(id) FROM t操作,第一次的读行操作读到的是表 t 中 ( B+ 树最左叶节点 page 内 ) 的最小记录吗?

    2.2K20

    数据仓库开发 SQL 使用技巧总结

    column_name(s) from table_name1 union select column_name(s) from table_name2 limit limit 分页查询使用 使用 select...in/exists 对比 in 是把外表和内表作 hash 连接,而 exists 是对外表作 loop 循环,每次 loop 循环再对内表进行查询;如果查询语句使用了 not in 那么内外表都进行全表扫描...-- 特性: 它们都是将分组中的某列转为一个数组返回,不同的是 collect_list 不去重而 collect_set 去重 -- collect_set 去重, collect_list 不去重...-- 还可以利用 collect 来突破 group by 的限制, hive 中在 group by 查询的时候要求出现在 select 后面的列都必须是出现在 group by 后面的,即 select... 列必须是作为分组依据的列 select username, collect_list(video_name)[0] from t_visit_video group by username; group_concat

    3.2K30

    【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

    提升生产力: 使用LINQ可以在短时间内完成复杂的数据查询和转换操作,从而提高开发效率。开发者不再需要编写大量的循环和临时变量来处理数据。...二、LINQ基础 2.1 LINQ查询的语法和结构 查询表达式语法: 查询表达式使用类似于SQL的语法来编写查询。以下是一些常见的查询表达式关键字和示例: from: 指定数据源和范围变量。...); 根据查询操作符的返回类型,你可以选择不同的方式来处理查询结果: 对于返回序列的操作符,你可以使用循环(如foreach)来遍历结果,并处理每个元素。...var query = collection.Where(item => item.Property > 5); // 定义查询 foreach (var item in query) // 在循环中执行查询...通常,操作符的类型和使用的终结操作符(如ToList()、ToArray()、First()等)会决定查询的执行方式。掌握延迟执行和立即执行的区别可以帮助你更好地优化查询性能并避免不必要的计算。

    2.3K61

    快速实现分列转到行(SQL版)一个问题,三种解法!

    C9' AS name ) t ; 表中数据情况: 下面就直接公布答案: SELECT t.class ,item AS name FROM yht_dw.student_info...下面接着上脚本: SELECT class ,collect_set(name) AS names FROM ( SELECT t.class...,';')) names AS item ) tt GROUP BY class ; 上结果图: 我懒,没有重新构造数据,直接用的子查询,但是看到结果,可能有读者会有疑问,这个咋还有方括号...其实hive里有一个类似于“汇总数据”sum的函数,collect_set是专注于文本的汇总杀器,而重要的是:它会剔除重复记录。 那如何解决方括号和双引号的问题呢?...其实也很简单,上脚本: SELECT class ,concat_ws(';',collect_set(name)) AS names FROM ( SELECT

    93921
    领券