一般sql操作

1.两张表查询a表中不在b表中的数据。

方法一:

select a.id from t_user_a a where a.id not in (select c.id from t_user_a c,t_user_b b where c.id=b.id)

方法二:

select * from t_user_a a left join t_user_b b on a.id = b.id where b.id isnull


2.用一条sql查询出没科成绩都大于80的学生

select distinct name from t_syllabus where name not in (select a.name from t_syllabus a where a.defen<80)

3.删除除了id不同,其他都相同的数据

扫描二维码关注公众号,回复: 2416471 查看本文章

delete from t_student where id not in(select min(id) from t_student group by xuehao, name, bianhao, kecheng, fenshu)

4.通过sql把t_user_a表中的数据copy到t_user_b表中

insert into t_user_b (id,name,adress,age) select b.id,b.name,b.adress,b.age from t_user_a b

5.有一张表,里面有三个字段,其中三条记录分别是(语文80,数学70,英语52),用一条sql展示下面思路

   大于等于80表示优秀,小于60不及格,大于60小于80良好

SELECT id,name,
     (CASE
    WHEN yuwen >= 80 THEN
        '优秀'
    WHEN yuwen <= 80 AND yuwen>60 THEN
        '及格'
    WHEN yuwen < 60 THEN
        '不及格'
    ELSE
        '其他'
    END) as 语文,    
(CASE
WHEN cast(shuxue as int) >= 80 THEN
    '优秀'
WHEN cast(shuxue as int) <= 80 AND cast(shuxue as int)>60 THEN
    '及格'
WHEN cast(shuxue as int) < 60 THEN
    '不及格'
ELSE
    '其他'
END) as 数学,
(CASE
WHEN cast(yingyu as int) >= 80 THEN
    '优秀'
WHEN cast(yingyu as int) <= 80 AND cast(yingyu as int)>60 THEN
    '及格'
WHEN cast(yingyu as int) < 60 THEN
    '不及格'
ELSE
    '其他'
END) as 英语
FROM

    t_chengji

6.关于sql的一些关键字

  排序 order by     降序desc  升序 asc     分组 group by 分组后筛选 having

  去重 distinct   最大值max  最小值min  分页limit(第几行,多少条数据) 求和 sum()  平均数 avg()

  in用法  exists用法   in只能返回一个字段    exists能返回多个字段

  like 用法   id like '%031%'          id like '_031'

 






















猜你喜欢

转载自blog.csdn.net/liqingwei168/article/details/79536690