#|【牛客】SQL刷题篇进阶篇


目录

  • 1.增删改操作?
    • 1.1 插入
    • 1.2 更新
    • 1.3 删除
  • 2.表与索引操作?
    • 2.1 表的创建、修改与删除
    • 2.2 索引的创建、删除
  • 3.聚合分组查询?
    • 3.1 聚合函数
    • 3.2 分组查询
  • 4.多表查询?
    • 4.1 嵌套子查询
    • 4.2 合并查询
    • 4.3 连接查询
  • 5.窗口函数?
    • 5.1 专用窗口函数
    • 5.2 聚合窗口函数
  • 6.其他常用操作?
    • 6.1 空值处理
    • 6.2 高级条件语句
    • 6.3 限量查询
    • 6.4 文本转换函数

1.增删改操作? 1.1 插入 1.2 更新 1.3 删除
SQLServer:DBCC CHECKIDENT (表名,reseed,0) MySQL: ALTER TABLE 表名 AUTO_INCREMENT= 1

2.表与索引操作? 2.1 表的创建、修改与删除 删除表所有数据的sql语句,和效率快慢
2.2 索引的创建、删除 sql索引语法
3.聚合分组查询? 3.1 聚合函数 3.2 分组查询 4.多表查询? 4.1 嵌套子查询 4.2 合并查询 The used select statements have a different number of columns解决办法
1.问题原因
这个异常出现在两个表使用union all进行合并时遇到的,表A存在的字段数量和表B最初是一致的,包括字段名字和类型都是一致,使用union all连接无异常;
后来由于需要在表B添加了一个新的字段,导致两张表的字段在数量上不一致,出现了异常;
  1. 解决办法
在使用union all进行合并操作时,使用null as "xxx"解决,如下,由之前的SQL语句
SELECT * FROM project t LEFT JOIN ( SELECT * FROM biz_a_contract UNION ALL SELECT * FROM biz_b_contract ) a ON a.id = t.contract_id WHERE t.id = '200'

改为
SELECT * FROM project t LEFT JOIN ( SELECT * FROM biz_a_contract UNION ALL SELECT tt.*,null AS 'xx' FROM biz_b_contract tt ) a ON a.id = t.contract_id WHERE t.id = '200'

【#|【牛客】SQL刷题篇进阶篇】或者直接列出具体的字段,保证顺序一致性
4.3 连接查询 5.窗口函数? 5.1 专用窗口函数 5.2 聚合窗口函数 6.其他常用操作? 6.1 空值处理 6.2 高级条件语句 6.3 限量查询 6.4 文本转换函数

    推荐阅读