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

PostgreSQL SQL写出变态味,可以!(附带两个哑谜)

从多年的SQL观察和优化的角度,这个SQL的撰写者并不一般,这是一个知名的软件中我们运行出现问题的SQL,执行中报错,报can not add sublink to placeholder_list。...核心部分 1 先说这段,这段的意思是,从task_run 表中取值与另一个表task,将两者的id进行比对,然后得到task_run的status,然后取其中的最后一条数据,如果这条数据有,则通过coalesce...for each ,意思是task表中的每一行,与下面的子查询返回的值进行循环,ON TRUE 是建立无条件的连接。...对于这样的问题,我们可以对这个SQL进行改写来改变其中的可能产生报错的问题,那么以上语句可以用修改语句的方式来解决遇到的问题,比如将子查询改为CTE WITH latest_status AS (...将语句改为join 而不是left join,语句就顺利的运行了。这里提醒在修改这个部分的时候,要明确你修改后是否会影响业务的逻辑,这里简单的分析应该是不影响业务逻辑。

5710

探索SQL Server元数据(一)

每一个关系型数据库系统,比如SQL Server 一定要提供关于它的结构的信息,这些信息往往需要通过sql语法来查询。通常这些信息被保存在指定数据表的结构中。...元数据function 还有很多元数据函数,如object_name()或col_name(),它们提供关于当前数据库中的模式作用域对象的信息。...目录存储过程 有许多存储过程的主要功能是为SQL Server的ODBC驱动程序提供元数据信息。当您建立ODBC连接时,该信息作为数据对象的集合。...当与其他SQL Server工具(如默认跟踪和动态管理对象)结合使用时,使用强大的SQL脚本用于开发和管理数据库是相当快速的。...学习使用元数据视图和函数的第一阶段是收集从各种著名的数据源(如SQL Server Central)中使用它们的查询。可以在MSDN上查询到。使用记录工具保存这些查询。

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

    SQL Server 监控统计阻塞脚本信息

    什么时候开始的?发生在那个数据库上? 阻塞发生在那些SQL语句之间? 阻塞的时间有多长? 阻塞发生的频率? 阻塞有关的连接是从那些客户端应用发送来的?……....我们要实现下面功能: 1: 查看那个会话阻塞了那个会话 2:阻塞会话和被阻塞会话正在执行的SQL语句 3:被阻塞了多长时间 4:像客户端IP、Proagram_Name...8:需要的时候开启这项功能,不需要关闭这项功能 于是为了满足上述功能,有了下面SQL 语句 SELECT wt.blocking_session_id AS BlockingSessesionId...正好这段时间,我在YourSQLDba上扩展一些功能,于是我将这个存储过程放置在YouSQLDba数据库中。...最后,这个脚本还有一个问题,如果阻塞或被阻塞的SQL语句是某个存储过程里面的一段脚本,显示的SQL是整个存储过程,而不是正在执行的SQL语句,目前还没有想到好的方法解决这个问题。

    81210

    【计算机本科补全计划】Mysql 学习小计(2)

    正文之前 昨天下午写了篇 Mysql学习小计,结果出乎意料的受欢迎?变相刺激了我多写点 Mysql?好吧,如尔所愿。...---- Mysql group by 语句 在分组的列上我们可以使用 ```COUNT, SUM, AVG```,等函数。...简单点说就是显示按照group by划分好的组显示完毕之后,如果要继续显示,那么coalesce 会提供一个默认的名称上去取代null。 以下实例中如果名字为空我们使用总数代替: ?...join 按照功能大致分为如下三类: inner join(内连接,或等值连接):获取两个表中字段匹配关系的记录。...---- Mysql null 值处理 我们已经知道 Mysql 使用 SQL select 命令及 where 子句来读取数据表中的数据,但是当提供的查询条件字段为 null 时,该命令可能就无法正常工作

    1.8K110

    SQL 基础-->SELECT 查询

    结构化查询语言 包括DDL(数据定义语言)、DCL(数据控制语言)、 DQL(数据查询语言)、DML(数据操纵语言) 二、SQL的特点 SQL 语句不区分大小写 SQL 语句能输入一行或多行...关键字不能整行缩写或分离 子句通常被放置在分开的行上 缩进可提高可读性 在SQL 开发工具,SQL 语句能选择分号结束(;) .当你运行多个SQL 语句的时候,需要分号 在SQL*Plus中,...你要用一个分号结束每个SQL 语句.(;) 三、SQL*PLUS特征: 字符日期左对齐 数字右对对齐 列名默认大写 SQL PLUS 自己的命令不需以分号“;”结束 四、SQL查询时,数字和日期类型的数据可用算术运算符...COALESCE 找非空 格式:COALESCE (表达式1,表达式2,表达式3,...,表达式n) 作用:返回第一个不为空的值,如果所有的都为空,则返回NULL。...的用法 --当COALESCE(exp1,exp2)包含两个表达式时,等价于CASE WHEN exp1 IS NOT NULL THEN exp1 ELSE exp2 END --COALESCE (

    97820

    《SQL Cookbook》 - 第一章 检索数据

    朋友推荐了一本书《SQL Cookbook》,翻译过来就是《SQL经典实例》,讲的都是SQL编写层面的案例,例如获得随机数、NULL值判断、求中位数、日期计算等,都是日常工作中可能用到的,但是有些知识点可能稍微模糊...,用的时候,得琢磨下,或者有些知识点不了解,你不知道通过SQL还可以实现某个功能,借此机会,系统回顾一下SQL相关的开发技能,争取了解之前不知道的,巩固之前模糊的知识点,跟大家共享读书笔记。...在SELECT语句中指定具体的列名,可以确保查询语句不会返回无关的数据。当在整个网络范围内检索数据时,这样做更重要,因为他避免了将时间浪费在检索不需要的数据上。 2....MySQL中可以用concat连接多列的值, select concat(cname, ' WORKS AS A ', job) from emp; DB2、Oracle和PG使用竖线进行连接, select...可以使用COALESCE将NULL值改为实际值,该函数会返回参数列表第一个非NULL的值,如果c不为0,返回c,否则返回0, select coalesce(c, 0) from emp; 此处能使用CASE

    88720

    探索SQL Server元数据(二)

    背景   上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据。这一篇中我会介绍如何进一步找到各种有价值的信息。以触发器为例,因为它们往往一起很多问题。...在我们使用sys.triggers的信息之前,需要来重复一遍,所有的数据库对象都存在于sys.objects中,在SQL Server 中的对象包括以下:聚合的CLR函数,check 约束,SQL标量函数...像DML触发器一样,可以有多个DDL触发器被创建在同一个T-SQL语句上。一个DDL触发器和语句触发它的语句在同一个事务中运行,所以除了Alter DATABASE之外都可以被回滚。...DDL触发器运行在T-SQL语句执行完毕后,也就是不能作为Instead OF触发器使用。   ...它们是几种类型的对象的父类,其他元数据如索引是表的属性。我们正在慢慢地努力去发现所有关于表的信息。期待下期

    1.6K20

    21个SQL实用脚本

    语法4:使用导入导出功能进行全表复制。如果是使用【编写查询以指定要传输的数据】,那么在大数据表的复制就会有问题?因为复制到一定程度就不再动了,内存爆了?它也没有写入到表中。...'N') AS 'NewName' --结果: N --COALESCE,返回其参数中的第一个非空表达式 SELECT COALESCE(NULL,NULL,1,2,NULL) --结果: 1 SELECT...TRUNCATE 是SQL中的一个删除数据表内容的语句,用法是: TRUNCATE TABLE [Table Name] 速度快,而且效率高,因为: TRUNCATE TABLE 在功能上与不带...WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。...但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

    18810

    最容易出错的 Hive Sql 详解

    在使用sql时如果不熟悉或不仔细,那么在进行查询分析时极容易出错,接下来我们就来看下几个容易出错的sql语句及使用注意事项。...正文开始 1. decimal hive 除了支持 int,double,string等常用类型,也支持 decimal 类型,用于在数据库中存储精确的数值,常用在表示金额的字段上 注意事项: 如:decimal...我们可以对 null 值进行处理,sql如下: select id, price - coalesce(dis_amount,0) as real_amount from product; 使用 coalesce...not in 是不包含 null 值的,如 city not in ('北京','上海'),这个条件得出的结果是 city 中不包含 北京,上海和 null 的城市。...9. and 和 or 在sql语句的过滤条件或运算中,如果有多个条件或多个运算,我们都会考虑优先级,如乘除优先级高于加减,乘除或者加减它们之间优先级平等,谁在前就先算谁。

    1.6K10

    《SQL Cookbook》 - 第三章 多表查询

    ),模仿外连接,标量子查询适合于所有数据库, select e.ename, d.loc,  (select eb.received from emp_bonus eb          ...多个表中返回缺少的值 使用全外连接,基于一个共同值从两个表中返回缺少的值,全外连接查询就是合并两个表的外连接查询的结果集。...coalesce函数能将NULL转成一个具体的,可以用于标准评估的值,coalesce函数返回参数列表里的第一个非NULL值, select ename, comm, coalesce(comm, 0)...看着很像,但是有些区别, (1) nvl只适合于两个参数的,coalesce适合于多个参数。...(2) coalesce里的所有参数类型必须保持一致,nvl可以不一致,如下所示, 《SQL Cookbook》读书笔记的历史文章: 《SQL Cookbook》 - 第一章 检索数据 《SQL Cookbook

    2.4K50

    SQL常用脚本大全,建议收藏!

    语法4:使用导入导出功能进行全表复制。如果是使用【编写查询以指定要传输的数据】,那么在大数据表的复制就会有问题?因为复制到一定程度就不再动了,内存爆了?它也没有写入到表中。...'N') AS 'NewName' --结果: N --COALESCE,返回其参数中的第一个非空表达式 SELECT COALESCE(NULL,NULL,1,2,NULL) --结果: 1 SELECT...DELETE TRUNCATE 是SQL中的一个删除数据表内容的语句,用法是: TRUNCATE TABLE [Table Name] 速度快,而且效率高,因为: TRUNCATE TABLE 在功能上与不带...WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。...但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

    1.6K20

    九个最容易出错的 Hive sql 详解及使用注意事项

    在使用sql时如果不熟悉或不仔细,那么在进行查询分析时极容易出错,接下来我们就来看下几个容易出错的sql语句及使用注意事项。...正文开始 1. decimal hive 除了支持 int,double,string等常用类型,也支持 decimal 类型,用于在数据库中存储精确的数值,常用在表示金额的字段上 注意事项: 如:decimal...我们可以对 null 值进行处理,sql如下: select id, price - coalesce(dis_amount,0) as real_amount from product; 使用 coalesce...not in 是不包含 null 值的,如 city not in ('北京','上海'),这个条件得出的结果是 city 中不包含 北京,上海和 null 的城市。...9. and 和 or 在sql语句的过滤条件或运算中,如果有多个条件或多个运算,我们都会考虑优先级,如乘除优先级高于加减,乘除或者加减它们之间优先级平等,谁在前就先算谁。

    1.1K10

    九个最容易出错的 Hive sql 详解及使用注意事项

    在使用sql时如果不熟悉或不仔细,那么在进行查询分析时极容易出错,接下来我们就来看下几个容易出错的sql语句及使用注意事项。...正文开始 1. decimal hive 除了支持 int,double,string等常用类型,也支持 decimal 类型,用于在数据库中存储精确的数值,常用在表示金额的字段上 注意事项: 如:decimal...我们可以对 null 值进行处理,sql如下: select id, price - coalesce(dis_amount,0) as real_amount from product; 使用 coalesce...not in 是不包含 null 值的,如 city not in ('北京','上海'),这个条件得出的结果是 city 中不包含 北京,上海和 null 的城市。...9. and 和 or 在sql语句的过滤条件或运算中,如果有多个条件或多个运算,我们都会考虑优先级,如乘除优先级高于加减,乘除或者加减它们之间优先级平等,谁在前就先算谁。

    1.5K00
    领券