mysql之3种子查询

  mysql有3种子查询,包括,where型,from型和exists型。

  where型子查询

  where后面跟的是条件表达式,条件为真时便取出该行,where型子查询是指内层的select语句的查询结果集充当外层select语句的where后面的条件表达式,比如,查询每个栏目下的最新的商品,select goods_id,cat_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id); 注意内层select语句只能书写一列,如果是多列就会报错,比如,select max(goods_id),cat_id from goods group by cat_id)多了cat_id这一列是不行的。

  from型子查询

  from型子查询是指内层的select语句的查询结果集充当外层select语句的新的表,比如,还是查询每个栏目下的最新的商品,select * from (select goods_id,cat_id,goods_name from goods order by goods_id desc,cat_id asc) as tmp group by cat_id;内层的表必须用as另取名称,不然会报错。

  exists型子查询

  exists型子查询和in用法相似,比如,查询有商品的栏目,select * from category where exists (select * from goods where goods.cat_id=category.cat_id);也可以用in实现,select * from category where cat_id in (select cat_id from goods);

时间: 2024-10-10 17:53:04

mysql之3种子查询的相关文章

MySQL中IN子查询会导致无法使用索引

原文:MySQL中IN子查询会导致无法使用索引 今天看到一个博客园的一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.)随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子查询做的不好,确实会导致无法使用索引的情况(IN子查询无法使用所以,场景是MySQL,截止的版本是5.7.18) MySQL的测试环境 测试表如下 create table test_table2 ( id int a

小贝_mysql三种子查询

mysql三种子查询 简要: 一.三种子查询 二.三种子查询理解模型 一.mysql 三种子查询 where子查询.from子查询.exists子查询 二.理解模型: 2.1.一个好的模型,便于我们去理解.当我们编写一条sql语句时,可以通过以下几点去理解: a.where表达式,把表达式放在行中,看表达式是否为真 b.列: 理解成变量,可以运算 c. 取出结果,可以理解成一张临时表 2.2.理解三种子查询 1.where子查询 把内层查询的结果当做是外层查询的比较条件 详细:  select

mysql中的模糊查询

转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2种通配符:“_”和“%”.“_”匹配任意单个字符,而“%”匹配任意多个字符(包括0个).举例如下: SELECT * FROM table_name WHERE column_name LIKE ‘m%’; #查询

PHP MYSQL登陆和模糊查询

PHP MYSQL登陆和模糊查询 PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个文件:login.php和logincheck.php; 表单代码: <form action="logincheck.php"method="post"> Yonghu:<inputtype="text" name="use

day15(mysql 的多表查询,事务)

mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b VARCHAR(10) ) INSERT INTO t1 VALUES(1,'a'); INSERT INTO t1 VALUES(2,'b'); INSERT INTO t1 VALUES(3,'c'); /*创建t2*/ CREATE TABLE t2( c INT PRIMARY KEY ,

MySQL如何执行关联查询

MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛.总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中,每一个查询,每一个片段(包括子查询,设置基于表单的select)都可能是关联. 所以,理解MySQL如何执行关联查询至关重要.我们先来看一个union 查询的例子.对于union查询,MySQL先将一系列的单个查询结果放到一个临时表中,然后再重新读出临时表数据来完成union查询.在MySQL的概念

Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常

忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了! 1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf CREATE DATABASE wolf; 创建用户表 user create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time dat

跟王老师学MySQL:单表查询

跟王老师学MySQL:单表查询 主讲教师:王少华   QQ群号:483773664 学习内容 查询所有字段 查询指定字段 查询指定记录 带in关键字的查询 带between and关键字的查询 带like关键字的查询 查询空值 带and的多条件查询 带or的多条件查询 查询不重复记录 对查询结果进行排序 单表查询是指从一张表中查询所需要的数据.查询数据时,可以从一张表中查询数据,也可以从多张表中同时查询数据.两者的查询方式上有一定的区别.因为单表查询只在一张表上进行操作,所以查询比较简单. 一.

mysql语句基本简单查询

mysql语句基本简单查询 第一节 -- or # 单行注释/***多行注释*/ -- c创建数据库examCREATE DATABASE exam; USE exam; /*创建部门表*/CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(50), loc VARCHAR(50)); /*创建雇员表*/CREATE TABLE emp( empno INT PRIMARY KEY, ename VARCHAR(50), job VA