• mysql-常用sql语句


    1,排序

    a,单列排序:select * from  table_name  order by  column_name  DESC        (注:order by 后不写默认asc升序,desc降序)

    b,多列排序:select * from  table_name  order by  column_name1, column_name2  DESC     (注:先根据column_name1进行排序,若column_name1相等则根据column_name2进行排序)

    c,其它条件排序:

    select * from table_name order by column_name1<NOW(), IF(

    column_name1<NOW(),

    0,

    column_name1

    ),

    column_name1 DESC

    (注:先按大于当前时间升序排,再按小于当前时间降序排)

    d,指定字段排序

    select * from table_name order by column_name1 ASC,column_name2 DESC    (注:先根据column_name1升序排,再根据column_name2降序排)

    2,聚合

    a,count()数据库表总行数

    select count(*) from t_city

    b,sum(),数据表某列求和

    select sum(column_name1) from t_city

    c,max(),数据表某列最大值

    select max(column_name1) from t_city

    d,min(),数据表某列最小值

    select min(column_name1) from t_city

    e,avg(),数据表某列平均值

    select avg(column_name1) from t_city

    f,group by,聚合

    查询出每个科目下最高分成绩的学生信息,显示学生的所有信息字段

    先根据科目聚合查出每个科目中最高分数,因为要显示学生的所有字段,则此处将聚合查出的数据作为一张表,再联合学生表再次进行数据过滤

    select t1.* from sdutent as t1,(
    select dept,max(score)as score2 from student GROUP BY dept) as t2
    where t1.dept=t2.dept and t1.score=t2.score2

    若需要再增加过滤条件,查询出每个科目下最高分数且是女生的学生信息

    select t1.* from sdutent as t1,(
    select dept,max(score)as score2 from student GROUP BY dept having sex='女') as t2
    where t1.dept=t2.dept and t1.score=t2.score2

    3,查询前N条数据

    a,select * from t_test1 limit 1(查询第一条数据)

    b,select * from t_test1 limit 1,5(即从第二行开始查询五条数据,查询的2-6行的数据)

    c,select * from t_test1 limit 0,5或select * from t_test1 limit 5(查询前N条数据)

    4,查询一周内数据,一年数据,N天的数据

    NOW()  函数:显示年月日时分秒2020-05-09 16:53:01

    CURDATE()  函数:显示年月日2020-05-09

    CURTIME()  函数:显示时分秒16:53:01

    a)查询当天数据

    select * from t_city where TO_DAYS(create_time)=TO_DAYS(NOW())

    b)查询昨天数据

    select * from t_city where (TO_DAYS(NOW())-TO_DAYS(create_time))<=1

    c)查询7天前的数据

    select * from t_city where DATE(create_time)< DATE_SUB(NOW(),INTERVAL 7 DAY)

    d)查询当前时间往前推7天内的数据
    select * from t_city where DATE(create_time)>= DATE_SUB(CURDATE(),INTERVAL 7 DAY) and DATE(create_time) <=DATE_FORMAT(NOW(),'%Y-%m-%d')

    e)查询当前月的数据

    select * from t_city where DATE_FORMAT(create_time,'%Y-%m')=DATE_FORMAT(CURDATE(),'%Y-%m')

    5,去重复

    单字段重复记录

    查询出城市名称相同的记录

    步骤1:先查出重复项

    select city from t_test4 group by city having count(*)>1

    步骤2:再查询出重复项的整条数据

    select * from t_test4 where city in(
    select city from t_test4 group by city having count(*)>1)

    使用distinct去重复,但distinct只能返回目标字段,无法返回其它字段

     select distinct city from t_test4

    6,多表联合查询

    多表联合查询包含四种查询方法

    a)最常见的一种:select * from t_test1,t_test2 where t_test1.id=t_test2.t_id   (注:两表中有匹配的就返回)

    b)inner join内连接 select * from t_test1 inner join t_test2 on t_test1.id=t_test2.t_id   (注:两表中有匹配的就返回)

    c)left join 左连接 select * from t_test1 left join t_test2 on t_test1.id=t_test2.t_id   (注:以左表为主表,返回左表所有数据及右表匹配的数据)

    d)right join 右连接 select * from t_test1 right join t_test2 on t_test1.id=t_test2.t_id   (注:以右表为主表,返回右表所有数据及左表匹配的数据)

  • 相关阅读:
    Python3与Python2的区别(转载)
    Python——通过斐波那契数列来理解生成器
    Solr4.8.1与Tomcat7整合
    Solr配置与简单Demo
    lucene 4.4 demo
    企业级搜索引擎Solr使用入门指南
    Solr使用入门指南
    使用solr搭建你的全文检索
    Solr 1.3 安装步骤
    Lucene/Solr开发经验
  • 原文地址:https://www.cnblogs.com/hpliud/p/12850861.html
Copyright © 2020-2023  润新知