最近在做一个能源监控的项目,因为用到从表里获取数据后得知数据存在哪一个表里后,再获取那个表的数据,所以就遇到了一个表名不固定的情况,一开始的方式,是我分两条sql语句来执行:

1.第一条sql 是通过条件来查询数据 ex:tblName(这个数据就是要去调用数据的表名)

select HisTblName,HisFldName from TYcYt where StationId=1 and YcCommDevId=1 and CommDevYcOrder=170

2.第二条语句就是执行select*from tblName........等一些列的语句动作。

select Value1 from THisSampleFiveMinute_1

where SampleTime=(select max(SampleTime) from THisSampleFiveMinute_1 where cast(SampleTime as date)='2017/3/28 0:00:00')

那么有没有什么方法,可是一句sql语句来实现呢,思路是将第一次查询出来的数据做表名,再次进行查询等动作,答案是有的,那个就是要用的变量的声明、变量的赋值、动态SQL(Exec)这些语句:

关于变量的声明、变量的赋值,可以参看之前写的关于select赋值的文章,这里重点讲下动态SQL(Exec)这一语句的使用方法:

字段名,表名,数据库名之类作为变量时,必须用动态SQL

declare @fname varchar(20)

set @fname = 'FiledName'

Select @fname from tableName                         -- 错误!不会提示错误,但结果为固定值FiledName,并非所要。

Exec('select ' + @fname + ' from tableName')     -- 正确!请注意加号前后的单引号的边上加空格

declare @fldName varchar(32) set @fldName=(select HisFldName from TYcYt where StationId=1 and YcCommDevId=1 and CommDevYcOrder=170)

declare @tblName varchar(32) set @tblName=(select HisTblName from TYcYt where StationId=1 and YcCommDevId=1 and CommDevYcOrder=170)

Exec

(

'select '+@fldName+' from '+@tblName

+' where SampleTime=(select max(SampleTime) from '+@tblName +' where cast(SampleTime as date)=''2017/3/29 0:00:00'')'

)

这里有一个问题,就是如果sql当中时间是变化的怎么办,想普通sql一样把时间单独独立出来就可以吗?其实是不行的,再动态SQL(Exec)中,必须将时间声明一个变量才可以,不然就会报错:

declare @fldName varchar(32) set @fldName=(select HisFldName from TYcYt where StationId=1 and YcCommDevId=1 and CommDevYcOrder=170)

declare @tblName varchar(32) set @tblName=(select HisTblName from TYcYt where StationId=1 and YcCommDevId=1 and CommDevYcOrder=170)

declare @dt datetime set @dt='2017/3/29 0:00:00'

Exec

(

'select '+@fldName+' from '+@tblName

+' where SampleTime=(select max(SampleTime) from '+@tblName +' where cast(SampleTime as date)='''+@dt+''')'

)

至此,大功告成-----姜彦 20170331

mysql 表的结果作为表_SQL--如何将Sql语句查询出来的结果作为一个表名 再次进行查询...相关推荐

  1. mysql 主码和外码_sql如何用sql语句对一个已经编辑好的表在设置主码和外码?Atlassian Confluence安装以及咋更改数据库...

    在上一篇文章中,小编为您详细介绍了关于<如何更改CAD尺寸标注的单位?丽台Q600 优化驱动 装了这个卡>相关知识.本篇中小编将再为您讲解标题sql如何用sql语句对一个已经编辑好的表在设 ...

  2. JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总

    JDBC连接过程: import java.sql.*;/*** Description:* Created by CWG on 2020/10/29 21:05*/ public class Con ...

  3. 用SQL语句添加删除修改字段及一些表与字段的基本操作 .

    用SQL语句添加删除修改字段及一些表与字段的基本操作 分类: MS SQL 2009-07-02 14:41 222人阅读 评论(0) 收藏 举报 用SQL语句添加删除修改字段 1.增加字段      ...

  4. SQL语句增删改查公司-员工3表典型案例

    基础原生SQL增删改查,一般公司业务表,必知必会基础流程! 程序开发之大法,从数据库开始,不管是sqlserver,Oracle数据库还是其他MySQL等等的数据库.都是从写SQL语句开始.需要您必知 ...

  5. django 使用原生SQL语句反向生成MODELS.PY中的表结构

    在一次工作中,有这么一个问题,就是要导入的数据字段不确定,但是还想使用django的ORM来对数据进行操作.. 琢磨了许久,弄个不完善的方案,但功能是能实现的,主要是思路.废话不多说了,丑陋的展示一下 ...

  6. 建立“图书_读者”数据库及如下 3 个表,并输入实验数据,用 SQL 语句实现如下五个查询(opengauss)

    建立"图书_读者"数据库及如下 3 个表,并输入实验数据,用 SQL 语句实现如下五个查询(opengauss) 题目所涉及的表如下 注:使用opengauss与HeidiSQL: ...

  7. 查询student表中所有李姓的学生的 SQL语句怎么写

    查询student表中所有李姓的学生的 SQL语句怎么写 1.使用left()函数来检索. 表格如图: 代码如下: left(b,1) 即 取 列字符的第一个字. 2.使用 like 模糊查询

  8. MySQL数据库学习笔记(三)----基本的SQL语句

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. mysql创建用户表的sql语句_Mysql创建、删除用户和表的SQL语句

    Mysql创建.删除用户和表的SQL语句 (2015-01-15 17:08:17) 标签: it 联动北方 数据库 分类: IT MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意 ...

最新文章

  1. Floodlight之 FloodlightContextStore 数据结构
  2. [并发编程] - Executor框架#ThreadPoolExecutor源码解读03
  3. 公司用云桌面还是台式计算机好,相比于性能更强的台式机为什么很多企业更喜欢用云桌面...
  4. 在Android命令行启动程序的方法
  5. jQuery框架学习第八天:ASP.NET jQuery实施方案
  6. 小米卢伟冰回应“低价误国”言论:华为是中国企业“低价”战略的榜样
  7. NET分页实现及代码
  8. 取得人生成功的40条定律
  9. 【转】Java中重载和重写的区别
  10. python3使用smtplib通过qq邮箱发送邮件
  11. 总结(6)--- python基础知识点小结(细全)
  12. python破解wifi-Python利用字典破解WIFI密码的方法
  13. 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料
  14. nginx 客户端返回499的错误码
  15. C# SolidWorks 二次开发 API ---创建异型孔特征
  16. 清华学霸:想学好英语,除了3500词,记牢这514个核心短语更重要
  17. 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
  18. 4G信号变卡的主要原因
  19. 2012年9月9日参加中国软件开发者大会学习笔记
  20. 2022年全球与中国半导体NOR闪存芯片市场现状及未来发展趋势

热门文章

  1. 《千面英雄》听书笔记
  2. 如何获取维普免费账号--在校外下载维普万方等全文
  3. EventBus基础
  4. 在安卓手机搭建kali环境,手机变成便携式渗透神器
  5. fastjson首字母大写的几种方法
  6. 51单片机寄存器详解
  7. 被动信息收集:信息收集内容、信息用途、信息收集DNS、DNS信息收集-NSLOOKUP
  8. LSP协议被劫持导致不能上网
  9. 互联网等三行业跻身VC投资前三甲
  10. 程序员之间的各种鄙视链