在MySQL中同时查找两张表中的数据的示例
这个例子里面我们从两个表中取出头两行,然后合并到一个表中。
在现实中我们常常会遇到这样的情况,在一个数据库中存在两个表,假设表1储存着公司个产品本季度销售信息,表2储存着公司本季度欠款金额情况。在一个页面中我们想把这两个信息显示出来。通常的做法是在程序中进行两次SQL查询,返回两个结果集,在分别显示出来,非常麻烦。
下面是实现这个功能的代码:
CREATE PROCEDURE test AS SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @col1c varchar(20),@col2c varchar(20), @index int SET @index = 1 CREATE TABLE #tmptbl --创建一个临时表,用于储存我们的结果 ( colID int IDENTITY(1,1) PRIMARY KEY CLUSTERED, col1 varchar(20), col2 varchar(20) ) DECLARE cur1 CURSOR FOR SELECT TOP 2 customerid FROM orders DECLARE cur2 CURSOR FOR SELECT TOP 2 regiondescription FROM region OPEN cur1 OPEN cur2 FETCH cur2 INTO @col2c FETCH cur1 INTO @col1c WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO #tmptbl (col1, col2) VALUES (@col1c, @col2c) FETCH NEXT FROM cur1 INTO @col1c FETCH NEXT FROM cur2 INTO @col2c END CLOSE cur1 CLOSE cur2 DEALLOCATE cur1 DEALLOCATE cur2 SELECT * FROM #tmptbl DROP TABLE #tmptbl GO
说明:
@@FETCH_STATUS,返回被fetch语句执行的最后游标状态。
返回值:0-FETCH语句执行成功
1-FETCH语句失败,或此行不再结果集中。
2-被提取的行不存在。
相关推荐
-
查找MySQL线程中死锁的ID的方法
如果遇到死锁了,怎么解决呢?找到原始的锁ID,然后KILL掉一直持有的那个线程就可以了, 但是众多线程,可怎么找到引起死锁的线程ID呢? MySQL 发展到现在,已经非常强大了,这个问题很好解决. 直接从数据字典连查找. 我们来演示下. 线程A,我们用来锁定某些记录,假设这个线程一直没提交,或者忘掉提交了. 那么就一直存在,但是数据里面显示的只是SLEEP状态. mysql> set @@autocommit=0; Query OK, 0 rows affected (0.00 sec) mys
-
mysql 数据表中查找重复记录
复制代码 代码如下: select user_name,count(*) as count from user_table group by user_name having count>1; 这个我在很早有发过一个asp下的ACCESS 的
-
在MySQL中实现二分查找的详细教程
给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7,7].问题:给定任意自然数,对数组进行二分查找,返回数组正确的位置,给出函数实现.注:连续相同的数字,返回第一个匹配位置还是最后一个匹配位置,由函数传入参数决定. 我为什么会出这道题目? 二分查找在数据库内核实现中非常重要 在数据库的内核实现中,二分查找是一个非常重要的逻辑,几乎99%以上的SQL语句(所有索引上的范围扫描/等值查询/Unique查询等),都会使用到二分查找进行数据的定位. 考虑一个
-
C#中实现查找mysql的安装路径
1.c#可以调用msyql的导入导出命令,但是需要先判断客户机是否安装了mysql,及其安装mysql的路径问题. 2.查询mysql安装路径的函数 复制代码 代码如下: private string GetMysqlPath() { string strPath = string.Empty; string strsql = "select @@basedir as basePath from dual ";
-
mysql查找删除重复数据并只保留一条实例详解
有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89 1242 Academy Of The Canyons 30 30 1243 Agoura High School 89 40 1244 Agour
-
MySQL优化之如何查找SQL效率低的原因
查询到效率低的 SQL 语句 后,可以通过 EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序,比如我们想计算 2006 年所有公司的销售额,需要关联 sales 表和 company 表,并且对 profit 字段做求和( sum )操作,相应 SQL 的执行计划如下: mysql> explain select sum(profit) from sales a,company b where a
-
MySQL 中查找含有目标字段的表的方法
复制代码 代码如下: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='字段名字' 参考:MySQL中,一个字段在多张表都存在,怎么用sql语句一次性查询这些表呢
-
mysql data文件夹位置查找
找到自己的mysql数据库的安装位置,如下 C:\Program Files\MySQL\MySQL Server 5.1,在它里面有个的my.ini文件,寻找如下行: [mysqld] 复制代码 代码如下: # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. bas
-
在MySQL中同时查找两张表中的数据的示例
这个例子里面我们从两个表中取出头两行,然后合并到一个表中. 在现实中我们常常会遇到这样的情况,在一个数据库中存在两个表,假设表1储存着公司个产品本季度销售信息,表2储存着公司本季度欠款金额情况.在一个页面中我们想把这两个信息显示出来.通常的做法是在程序中进行两次SQL查询,返回两个结果集,在分别显示出来,非常麻烦. 下面是实现这个功能的代码: CREATE PROCEDURE test AS SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @col1c var
-
MYSQL使用Union将两张表的数据合并显示
使用UNION操作符 union:用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 使用union操作符会将多张表中相同的数据取值一次,如果想将表1和表2中的值完整的显示出来,可以使用union all. 演示 小伙伴们自行创建一下表. 表1数据如下: 表2数据如下: OK,表数据已经创建完成,一共五条数据,接下来我们去看一看union 和 union all 的使用. 使用union 看一下效果: select t1.id id, t
-
Mysql实现定时清空一张表的旧数据并保留几条数据(推荐)
要达到如下目的: Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就保留最新的10条数据(这个数据同样可以自定义,但要小于等于之前的超过数据条数). 简单说一下解决的思路(从后往前推导): 1.开启一个定时器,这个定时器做了两件事: ⑴设置了时间间隔 ⑵调用一个存储过程 2.写一个存储过程,此存储过程要做两件事: ⑴判断表的数据条数是否超过20,如果超过20才做下面
-
在Oracle数据库中同时更新两张表的简单方法
以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的 今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2.其中a2和b2是关联的,想把A中的字段a1更新成B中的b1 理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误.而且确实还有些小小细节没有注意到. 首先上测试数据 表1,ZZ_TEST1 表2,ZZ_TEST2 要把表一的text更新成表二的text1值,对应
-
数据库中两张表之间的数据同步增加、删除与更新实现思路
分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END
-
基于SQL Server中如何比较两个表的各组数据 图解说明
开始 前一阵子,在项目中碰到这样一个SQL查询需求,有两个相同结构的表(table_left & table_right),如下: 图1. 检查表table_left的各组(groupId),是否在表table_right中存在有一组(groupId)数据(data)与它的数据(data)完全相等. 如图1. 可以看出表table_left和table_right存在两组数据完整相等: 图2. 分析 从上面的两个表,可以知道它们存放的是一组一组的数据:那么,接下来我借助数学集合的列举法和运算进行
-
mysql关联两张表时的编码问题及解决办法
Mysql关联两张表时,产生错误提示Illegal mix of collations 1.先用工具把数据库.两张表的编码方式改变 2.这步很重要,需要改变字段的编码方式. ALTER TABLE `表名` CHANGE `dev_chancode` `字段` VARCHAR(32) CHARACTER SET gbk NOT NULL; 总结:在建表时一定注意统一的编码方式,后续搞来搞去超级麻烦. 如何解决MySQL表编码转换问题 将待导出的数据表的表结构导出(可以用Phpmyadmin.my
-
django有外键关系的两张表如何相互查找
这篇文章主要介绍了django有外键关系的两张表如何相互查找,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 两张通过外键联系的表,如何在一张表上根据另一张表上的属性查找满足条件的对象集? 平常查找表中数据的条件是python中已有的数据类型,通过名字可以直接查找.如果条件是表中外键列所对应表的某一列,该如何查询数据? 表1是新闻表,是回复表中某一外键指向的表,表2是回复表. 问题1:根据表1的某些条件来查找表2的对象集. class News(
-
mysql从一张表查询批量数据并插入到另一表中的完整实例
说在前面 nodejs 读取数据库是一个异步操作,所以在数据库还未读取到数据之前,就会继续往下执行代码. 最近写东西时,需要对数据库进行批量数据的查询后,insert到另一表中. 说到批量操作,让人最容易想到的是for循环. 错误的 for 循环版本 先放出代码,提前说明一下,在这里封装了sql操作:sql.sever(数据库连接池,sql语句拼接函数,回调函数) for(let i=0;i<views.xuehao.length;i++){ sql.sever(pool,sql.select(
-
MySQL 两张表数据合并的实现
有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `bigdata_qiye` ( `id` bigint(64) NOT NULL COMMENT '主键', `tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID', `registration_type` int(2) DEFAULT NULL COMMENT
随机推荐
- javascript 动态脚本添加的简单方法
- Erlang分布式节点中的注册进程使用实例
- PowerShell小技巧之True和False的类型转换
- JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
- win2008 r2 下安装sql server 2005 64位教程(图解)
- 不使用script导入js文件的几种方法
- php 代码优化的42条建议 推荐
- php 缓存函数代码
- CodeIgniter框架验证码类库文件与用法示例
- asp 读取文件和保存文件函数代码
- MySQL与SQL的触发器的不同写法
- javascript创建createXmlHttpRequest对象示例代码
- Bootstrap CSS使用方法
- Android内核源码 在Ubuntu上下载,编译,安装
- 浅谈多线程中的锁的几种用法总结(必看)
- PYTHON基础-时间日期处理小结
- Vue Cli3 创建项目的方法步骤
- 微信小程序如何获取群聊的openGid以及名称详解
- 修改Laravel自带的认证系统的User类的命名空间的步骤
- 使用python画个小猪佩奇的示例代码