`
SonofGod
  • 浏览: 20830 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

sql语句总结

    博客分类:
  • sql
阅读更多

1、  在表A中存在一部分记录,主键是重复的,将重复的主键删除,只保留改主键的第一条记录

假设表A的数据如下:

 

ID NAME NAME2 NAME3

1

A    
2 A    
3 B    
4 B    
5 C    

 

处理后表A的数据如下:

ID

NAME NAME2 NAME3
1

A

   
2 B    
3 C    

 

答案:

delete test t1
where t1.rowid !=
(
   select max(t2.rowid) from test t2
   where t2.id = t1.id
)

 

2、请写出数据库关联更新的SQL,用B表的数据去更新A表,要求主键对应。

假设表A的数据如下:

 

ID

NAME

NAME2 NAME3

1

A

 

 

2

B

 

 

3

C

 

 

 

B的数据如下:

 

ID

NAME2

NAME3

1

南京

1

2

北京

2

4

上海

3

更新表A后的结果如下:

 

ID

NAME1

NAME2

NAME3

1

A

南京

1

2

B

北京

2

3

C

 

 

要求sql要考虑通用情况,使用表中的任何数据,而不能删除A表中任何一行数据。

 

update test t1 set(t1.f2,t1.f3) = (select t2.f2,t2.f3 from test2 t2 where t1.id = t2.id)

 

3、有如下A、B两个表,如何将A表的数据查询出来,结果如B所示?

         A表:

姓名

科目

分数

张三

语文

87

李四

数学

98

张三

英语

74

张三

数学

95

李四

语文

80

李四

英语

98

 

         B表:

姓名

语文

数学

英语

总分

张三

 

 

 

 

李四

 

 

 

 

 

思路:

 

1:先需要想到行转列函数 decode 或 case

 

 select a.name 姓名,
        (case
          when course = '语文' then
           score
        end) 语文,
        (case
          when course = '英语' then
           score
        end) 英语,
        (case
          when course = '数学' then
           score
        end) 数学,
        score
   from test a
  order by a. name desc;

 

2:想到求列的总和(想到sum语句)

select a.name 姓名,
       sum(decode(course, '语文', score)) 语文,
       sum(decode(course, '数学', score)) 数学,
       sum(decode(course, '英语', score)) 英语,
       sum(score) 总分
  from test a
 group by a.name
 order by a. name desc;

 

另外一种方法(不推荐)

select a.name 姓名,
       sum(case
             when course = '语文' then
              score
           end) 语文,
       sum(case
             when course = '英语' then
              score
           end) 英语,
       sum(case
             when course = '数学' then
              score
           end) 数学,
       b.total 总分
  from test a, (select name, sum(score) total from test group by name) b
 where a.name = b.name
 group by a.name, b.total
 order by a. name desc;

 

      另外一个相似题目:
        有两张关联的表A、B
        A:  id   acount  pay_id               B:   pay_id  B_acount
             1     100      1                             1        0
             2     200      2                             2        0
             3     200      1                     
         要求,更新表B,使得B_acount的值等于表A中对应的pay_id的所有acount之和。打印如下:
             B:  pay_id     B_acount
                       1             300
                       2             200
------------------------------------------------------------------
        update B  
        inner join A on B.pay_id = A.pay_id  
        set b_acount= 
       (select sum(acount)  from A where A.pay_id=B.pay_id) 

 

 4:首先是需要对表做一个规划,即必须有自己的ID和ID对应这条记录的PID(父ID)。
简单的数据结构如下
id    pid
1      0 
2      0 
3      1 
4      1 
5      2 
6      2 
7      3 
8      4 
9      5 
比如你现在需要取出ID是1的以及其下所有的记录,如:
id pid 
1  0 
3  1 
4  1 
7  3 
8  4

查询语句如下:
select *
  from TEST
 start with id = 1
connect by prior id = pid
 order by id asc

如果有条件语句,比如where or when,其语句放在 start with前面

 

5:MERGE的用法

 

create table TEST
(
  ID   NUMBER,
  NAME VARCHAR2(100),
  PID  NUMBER default 0
)

 

      MERGE INTO test D
      USING (SELECT 1 id FROM dual) S
      ON (S.id = D.id)
      WHEN MATCHED THEN
        UPDATE SET D.name = 'aaA' where D.Id = 1
      WHEN NOT MATCHED THEN
        INSERT (d.id, D.name, d.pid) VALUES (1, 'A', 0)

 

参考:

   第三题的题目参考自  http://haohaoxuexi.iteye.com/blog/1820541

 

分享到:
评论

相关推荐

    SQL语句总结

    本文将深入探讨“SQL语句总结”这一主题,特别关注MySQL数据库的常用操作。 首先,我们从基础的数据库操作开始,即CRUD(Create、Read、Update、Delete),它们构成了所有数据库操作的核心。 1. **创建(Create)*...

    SQL语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等

    SQL 语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等 SQL 语句是关系数据库管理系统的核心组成部分,用于管理和操作数据库。下面是 SQL 语句的总结,包括创建数据库、创建表、修改表结构、增删...

    常用 SQL 语句大全+50个常用sql语句总结

    根据给定的文件信息,以下是对“常用 SQL 语句大全+50个常用sql语句总结”的详细解析,涵盖数据操作、数据定义、数据控制、事务控制以及程序化 SQL 等方面的重要知识点。 ### 数据操作 1. **SELECT**:用于从...

    常用实用sql语句总结

    `SELECT`语句是最常用的SQL语句之一,用于从表中检索数据。 **示例代码:** ```sql SELECT * FROM test_table; ``` - `SELECT *`表示选择所有列。 - `FROM`后跟表名。 ### 删除表 (DROP TABLE) `DROP TABLE`语句...

    MYSQL常用基本sql语句总结

    本文档是有关于MySQL的最常用的sql语句,非常的方便查询和复习

    50个经典sql语句总结

    50个经典sql语句总结50个经典sql语句总结50个经典sql语句总结50个经典sql语句总结

    sql语句总结配合业务实例

    SQL(Structured Query Language)是用于管理和操作数据库的标准编程语言,它是数据存储、查询、更新和管理的核心工具。...通过网页版的"sql语句总结.html",你可以更直观地学习和查阅这些知识,进一步提高工作效率。

    常用mysql sql语句总结

    常用mysql sql语句总结

    一点sql语句总结

    这篇博客“一点sql语句总结”可能涵盖了SQL的基本概念、常用操作以及一些高级技巧。 1. **SQL基本概念**: - 数据库:存储数据的结构化集合,SQL用于操纵这些数据。 - 表:数据库中的数据组织形式,由列(字段)...

    SQL语句总结 SQL Server与Access的常用语句

    SQL语句总结,并区别SQL Server与Access的差异。

    Transact-SQL语句总结大全

    介绍了各种SQL语句与使用实例 Transact-SQL语句 语法大全2008-01-17 10:33语句 ----功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除...

    神通KSTORE数据库的常用sql语句总结

    文档内容为:神通KSTORE数据库的常用sql语句总结。

    创建和修改数据库sql语句总结讲解.pptx

    创建和修改数据库sql语句总结讲解.pptx

    常用的sql语句总结

    以下是一些SQL语句的总结,这些语句在日常开发和数据分析中非常常见。 1. **数据定义语言(DDL)**:这部分SQL语句用于创建和修改数据库结构。 - `CREATE TABLE`:创建新表,定义列名、数据类型和其他属性。 - `...

    mysql常用sql语句总结

    sql语句

    标准SQL语句总结(经典总结)

    2. **SQL语句分类**: - **数据定义语言(DDL)**:包括`CREATE`、`ALTER`、`DROP`,用于创建、修改和删除数据库对象,如表、视图、索引等。 - **数据操纵语言(DML)**:包含`INSERT`、`DELETE`、`SELECT`和`...

    详细的SQL语句总结及细则说明。

    详细总结了SQL的经典执行语句,个语句的使用特点及注意事项。

    VB用SQL语句总结

    ### VB与SQL语句结合应用详解 在软件开发领域,Visual Basic(简称VB)作为一款流行的应用程序开发工具,常被用于构建各种Windows桌面应用程序。然而,在处理数据方面,VB通常需要与数据库管理系统(如SQL Server)...

Global site tag (gtag.js) - Google Analytics