【牛客】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'

或者直接列出具体的字段,保证顺序一致性

4.3 连接查询

5.窗口函数⭐

5.1 专用窗口函数

5.2 聚合窗口函数

6.其他常用操作⭐

6.1 空值处理

6.2 高级条件语句

6.3 限量查询

6.4 文本转换函数

你可能感兴趣的:(#,数据库,Java,sql,数据库,database)