12_查询之五种子句使用陷阱


1.查询的五种子句是有先后顺序的,

先后顺序分别是:

where,group by,having,order by,limit

2.使用group by时要小心,

因为查询的列中的内容第一次出现当成代表,后面只换group by后字段中的内容,

而不是group by后字段中的内容就不会变。如:

select goods_name,cat_id,max(shop_price) from goods group by cat_id;这条语句就是错误的。goods_name只显示第一次查询到的内容。

select * from goods group by cat_id;取出栏目分组后,每个栏目中第一次出现列的属性。

3.查询的列当成变量来理解

查询的结果当成一张新表来理解

select goods_id,cat_id,goods_name,shop_price from goods order by cat_id,shop_price desc;把这整条语句的结果当成一张新表

查询每个栏目中价格最高的商品:

select * from (select goods_id,cat_id,goods_name,shop_price from goods order by cat_id,shop_price desc) as tmp group by cat_id;

时间: 2024-10-14 00:59:24

12_查询之五种子句使用陷阱的相关文章

小贝_mysql select5种子句介绍

mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理解where子句 理解select 列1.列2- fromtable where where子句 a. 把where子句看成表达式.到table中查询满足表达式成立的行 b. 上述查询语句的运行顺序.先找到表table后.再运行where子句.满足表达式后进行展示. c.比較运算符和逻辑运算符 2.

数据库---数据库查询的各种子句

基本查询 orderby子句 形式: order by 排序字段1 [排序方式], 排序字段2 [排序方式], ..... 说明: 对前面取得的数据(含from子句,where子句,group子句,having子句的所有结果)来指定按某个字段的大小进行排列(排序),排序只有2种方式: 正序: ASC(默认值),可以省略 倒序: DESC 如果指定多个字段排序(虽然不常见),则其含义是,在前一个字段排序中相同的那些数据里,再按后一字段的大小进行指定的排序. limit子句 形式: limit [起

OAF_查询4种不同的实现方式的比较和实现(案列)

2014-06-02 BaoXinjian 一.摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2). AutoCustomizationCriteria:SimpleSearchPanel & AdvancedSearchPannel 使用最多的查询方式,存在两种方式simple & advanced pannel (3). 完全客制化Searc

LINQ查询表达式---------let子句

LINQ查询表达式---------let子句 let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它.此范围变量可以再后续的LINQ子句中使用. class Program { static void Main(string[] args) { int[] number = { 12, 15, 16, 17, 18, 19, 20 }; var query = from num in number let n = num % 2 where n == 0

警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱

警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱 以下文章来源:https://blog.csdn.net/defonds/article/details/46745143 mer_stage 表有 216423 条记录,DDL:CREATE TABLE `mer_stage` ( `STAGE_ID` int(11) NOT NULL AUTO_INCREMENT, `MER_ID` int(11) NOT NULL, `MER_CODE` varch

SQL查询操作及子句优先级

用source .sql文件竟然可以自动建表. 简单数据查询: select * from table_name; 避免重复查询: select distinct(field_name) from table_name; 实现简单的数学四则运算: select 1*2; select 10 MOD 3; select field_name*2 from table_name; 实现字符串连接: select concat("hello","world"); sele

Merge:探讨on子句和when not match子句的陷阱

在细节上,体现编程的修养.每一位大师,master,其基础必定夯实.废话不多说,直接上干货,Merge子句用于对两个数据表执行数据同步,On子句指定匹配(when matched)条件,When子句指定额外的过滤条件和数据更新逻辑.源表(Source Table)和靶表(Targe Table)的数据行能够匹配成功,这意味着on子句和when match条件都被满足,进入到when matched子句定义的更新代码中,执行数据同步操作:如果不满足on子句,那么必须深入理解不匹配(when not

SQL查询几种的区别。

最近看了几篇SQL查询的文章做一下总结哦,大概简记如下: SQL查询的实质是,是指从数据库中取得数据的子集,可以先取列子集,然后再取符合条件的行子集. 1.单表查询: SELECT [Name] ,[GroupName]  FROM [AdventureWorks].[HumanResources].[Department]WHERE DepartmentID>1 and DepartmentID<3 or DepartmentID>5 and DepartmentID<7 2.多

树结构的查询start with 子句

oracle start with connect by 用法 oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfW