exists

leetcode183 从不订购的客户 Customers Who Never Order

半城伤御伤魂 提交于 2019-12-02 00:25:34
假设一个网站包含两个表, Customers 表和 Orders 表。编写一个 SQL 语句找出所有从不订购任何东西的客户。 创建表和数据: Create table If Not Exists Customers (Idint, Name varchar(255)); Create table If Not Exists Orders (Id int,CustomerId int); Truncate table Customers; insert into Customers (Id, Name) values('1', 'Joe'); insert into Customers (Id, Name) values('2', 'Henry'); insert into Customers (Id, Name) values('3', 'Sam'); insert into Customers (Id, Name) values('4', 'Max'); Truncate table Orders; insert into Orders (Id, CustomerId) values('1', '3'); insert into Orders (Id, CustomerId) values('2', '1'); 解法: 1.顾客表的id和订单表的customerid关联

Mysql常用查询

丶灬走出姿态 提交于 2019-12-01 23:31:45
IN/NOT IN操作符:查询满足(不满足)指定范围内的条件的记录。 s_id为101和102的记录: MYSQL> SELECT s_id, s_name FROM fruits WHERE s_id IN (101,102); s_id不等于101和102的记录: MYSQL> SELECT s_id, s_name FROM fruits WHERE s_id NOT IN (101,102); BETWEEN AND/NOT BETWEEN AND查询: 查询指定范围内(外)的值(包括两个端点值),参数:范围的开始值和结束值。 查询f_price在2~10之间的记录: MYSQL> SELECT f_name, f_price FROM fruits WHERE f_price BETWEEN 2 AND 10; LIKE操作符: 模糊查询,“%”匹配任意长度的字符,“_”匹配任意一个字符。 查询以b开头的记录: MYSQL> SELECT f_name FROM fruits WHERE f_name LIKE 'b%'; 查询匹配ball的记录: MYSQL> SELECT f_name FROM fruits WHERE f_name LIKE 'bal_'; NULL值查询: 如果某个字段设置为NULL(NULL不等于0,也不等于空字符串),则可使用IS

sql优化整理(二)

↘锁芯ラ 提交于 2019-12-01 22:12:19
  对于连接查询,EXPLAIN的extra字段出现using join buffer,表示使用了连接缓存,保证JOIN语句中被驱动表上JOIN条件字段已经添加索引; LEFT JOIN 条件用于确定如何从右表搜索行,左边一定有,所以右边的关键是要建立索引;左连接索引加在右表; RIGHT JOIN条件用于确定如何从左表搜索行,右边一定有,左边的关键是建立索引;左表建立索引;      关于慢查询分析的步骤 1.开启慢查询日志,设置阈值,比如超过5秒就是慢sql,并将它抓出来 2.explain+慢sql分析 3.show profile查询sql在mysql服务器里面的执行细节和生命周期等 4.sql数据库服务器的参数调优      小表驱动大表的解释,下面有两组循环;   第一组循环 for (int i = 5; ..) { for(int j = 1000;...) { } }      第二组循环 for (int i = 1000;..) { for (int j = 5; ...) { } }   上面两组循环,都是循环了5000次;对于数据库而言,第一组循环比较好,因为第一组循环总共就创建了5个连接,不用频繁的创建连接,释放连接;   小表驱动大表,意思是小的数据集驱动大的数据集; EXISTS select * from A where id in (select

导出Excel数据国家,城市,机场

时光总嘲笑我的痴心妄想 提交于 2019-12-01 19:31:09
T13_REF_COUNTRY_SAT_TEST COUNTRY_CD NAME_CN NAME_EN T13_REF_CITY_SAT_TEST CITY_CD NAME_CN NAME_EN T13_REF_AIRPORT_SAT_TEST IATA_CD NAME_CN NAME_EN 0 接口中不存在 1 记录数量只有1条(新增) 2 ... ---1 T13_REF_COUNTRY_SAT_TEST 总`327` SELECT COUNT(COUNTRY_CD) FROM T13_REF_COUNTRY_SAT_TEST 去重`259` SELECT COUNT(DISTINCT COUNTRY_CD) FROM T13_REF_COUNTRY_SAT_TEST 总`82` SELECT COUNT(COUNTRY_CD) FROM T13_REF_COUNTRY_SAT_TEST WHERE IS_EXISTS='0' SELECT COUNTRY_CD,NAME_CN,NAME_EN FROM T13_REF_COUNTRY_SAT_TEST WHERE IS_EXISTS='0' 总`177` SELECT COUNT(COUNTRY_CD) FROM T13_REF_COUNTRY_SAT_TEST WHERE IS_EXISTS='1' 新增`129`

MySQL高级查询

此生再无相见时 提交于 2019-12-01 19:23:25
1、exists和not exists子查询 /*exists的常用用法*/ drop table if exists student;   此外,exists也可以作为where的子查询: /*exists的参数是一个任意的子查询*/ /*若有返回行,exists的结果为true,会执行外层语句*/ /*若无返回行,exists结果为false,外层语句不再执行*/ select colums from tableName where exists(子查询);   注意,exists和not exists的结果只取决于是否有返回记录,不取决于记录的内容。   2、子查询注意事项   (1)子查询语句可以嵌套在SQL语句中任何表达式出现的位置   子查询可以被嵌套在select语句的列、表和查询条件中,即select子句、from子句、where子句、group by子句和having子句。 /*select子句*/ select(子查询)from 表名; /*from子句*/ /*这里表的别名不能省略*/ select * from(子查询 )as 表的别名;   (2)只出现在子查询中而没有出现在父查询中的表不能包含在输出列中;   3、分组查询   (1)group by——将查询结果按照一个、多个字段分组 /*单独使用group by*/ select * from

nodejs, redis. check if keys exists and create new if not

落爺英雄遲暮 提交于 2019-12-01 19:05:55
I'm new to nodejs and maybe don't got an event system how it should work. Can't find a bug. Please advice. I need a simple task - check for a tag, if it does not exists, set the new key and info about the tag. The problem is - then I run the script for the first time, it's always returns 'keys not exists'. Check the redisdb keys - it creates many tags Here is my code for (x = 0; x < rows.length; x++) { if (rows[x].term_taxonomy_id != 1) { var taxonomy = findOne(rterms, rows[x].term_taxonomy_id); rc.exists('tag:' + taxonomy.name, function (err, rexists) { if (rexists == false) { rc.incr('tags

[转] sql中的in与not in,exists与not exists的区别

ε祈祈猫儿з 提交于 2019-12-01 15:56:15
1、in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists, 子查询表小的用in; 例如:表A(小表),表B(大表) select * from A where cc in(select cc from B)  -->效率低,用到了A表上cc列的索引; select * from A where exists(select cc from B where cc=A.cc)  -->效率高,用到了B表上cc列的索引。 相反的: select * from B where cc in(select cc from A)  -->效率高,用到了B表上cc列的索引 select * from B where exists(select cc from A where cc=B.cc)  -->效率低,用到了A表上cc列的索引。 2、not in 和not exists not in 逻辑上不完全等同于not exists,如果你误用了not in,小心你的程序存在致命的BUG,请看下面的例子: create table #t1(c1 int,c2

Spring-Data-Jpa使用总结

冷暖自知 提交于 2019-12-01 15:12:36
参考资源列表 官方文档:https://docs.spring.io/spring-data/jpa/docs/2.1.5.RELEASE/reference/html/ 《Spring Data JPA入门到精通》 前言 JPA 是 Java Persistence API 的简称,是 Spring 在 Hibernate 的基础上进行的二次封装框架,为了更好更方便的融入 Spring 大家庭,同时也提供了一些 Hibernate 没有的特性,与其他ORM框架一起构成 SpringData ,统一封装了ORM层,使开发人员使用起来更加方便快捷。 备注:本文所有代码都是基于SpringBoot 2.1.5版本 JPA的使用 基本单表操作的使用 对于操作单表来说,jpa提供了非常方便使用的封装,我们只需要按规范编写Repository接口同时继承 JpaRepository 就可以享用jpa基本功能了。代码如下: User实体: package com.yizhu.entity; import lombok.Builder; import lombok.Data; import lombok.ToString; import javax.persistence.*; import java.io.Serializable; import java.util.List; import

PHP check if username is available

一笑奈何 提交于 2019-12-01 14:00:23
I'm working on checking if the username exists from the database. While the user is typing this username, it will check up if it exists from the database. I've got an error Warning: mysql_result() expects parameter 1 to be resource, boolean given in username_check.php on line 12. HTML CODE <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> </style> </head> <body> <input id="username" type="text"> <span id="username_status"></span> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/users.js"><

Spring整合Quartz分布式定时任务

醉酒当歌 提交于 2019-12-01 13:48:39
概述 虽然单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性、高可靠性满足。假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了。使用 Quartz 的集群能力可以更好的支持你的业务需求,并且即使是其中一台机器在最糟的时间崩溃了也能确保所有的 Job 得到执行。 Quartz 中集群如何工作 一个 Quartz 集群中的每个节点是一个独立的 Quartz 应用,它又管理着其他的节点。意思是你必须对每个节点分别启动或停止。不像许多应用服务器的集群,独立的 Quartz 节点并不与另一其的节点或是管理节点通信。Quartz 应用是通过数据库表来感知到另一应用的。 图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知 创建Quartz数据库表 因为Quartz 集群依赖于数据库,所以必须首先创建Quartz数据库表。Quartz 包括了所有被支持的数据库平台的 SQL 脚本。在 <quartz_home>/docs/dbTables 目录下找到那些 SQL 脚本,这里的 <quartz_home> 是解压 Quartz 分发包后的目录。 这里采用的Quartz 2.2.3版本,总共11张表,不同版本,表个数可能不同。数据库为mysql,用tables_mysql_innodb.sql创建数据库表