select * from 后有多个表的使用方法(已知一个表的结构为xxx 怎样通过select语句把他变成以下结构)

已知一个表的结构为:

怎样通过select语句把他变成以下结构:

首先,添加数据

USE [DBTEST]
GO
/****** Object: Table [dbo].[SDUDENTS] Script Date: 2019/12/9 10:33:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SDUDENTS](
[GUID] [int] IDENTITY(100001,1) NOT NULL,
[STUDENT] [nvarchar](50) NOT NULL,
[KEMU] [nvarchar](50) NULL,
[CHENGJI] [int] NULL,
CONSTRAINT [PK_SDUDENTS_1] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[SDUDENTS] ON
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100001, N‘李四‘, N‘语文‘, 75)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100002, N‘马六‘, N‘语文‘, 89)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100003, N‘王五‘, N‘语文‘, 67)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100004, N‘张三‘, N‘语文‘, 60)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100005, N‘张三‘, N‘数学‘, 34)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100006, N‘李四‘, N‘数学‘, 79)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100007, N‘王五‘, N‘数学‘, 98)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100008, N‘马六‘, N‘数学‘, 78)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100009, N‘张三‘, N‘英语‘, 88)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100010, N‘李四‘, N‘英语‘, 87)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100011, N‘王五‘, N‘英语‘, 99)
GO
INSERT [dbo].[SDUDENTS] ([GUID], [STUDENT], [KEMU], [CHENGJI]) VALUES (100012, N‘马六‘, N‘英语‘, 54)
GO
SET IDENTITY_INSERT [dbo].[SDUDENTS] OFF
GO

1.先将这个表互相连接查询(需要几个科目就连几次,我这儿有三个科目,所以连3次,SDUDENTS A,SDUDENTS B,SDUDENTS C)

select * from SDUDENTS A,SDUDENTS B,SDUDENTS C

得到以下数据(12*12*12      1728条数据)

2.对表数据进行学生姓名筛选

select * from SDUDENTS A,SDUDENTS B,SDUDENTS C where a.STUDENT=b.STUDENT AND b.STUDENT=c.STUDENT

得到如下数据

3.对科目进行筛选

select * from SDUDENTS A,SDUDENTS B,SDUDENTS C where a.STUDENT=b.STUDENT AND b.STUDENT=c.STUDENT
AND A.KEMU=‘语文‘ AND B.KEMU=‘数学‘ AND C.KEMU=‘英语‘;

得到以下数据

4.定义好查询的内容

select A.STUDENT AS 学生,A.CHENGJI AS 语文,B.CHENGJI AS 数学,C.CHENGJI AS 英语 from SDUDENTS A,SDUDENTS B,SDUDENTS C
where a.STUDENT=b.STUDENT AND b.STUDENT=c.STUDENT
AND A.KEMU=‘语文‘ AND B.KEMU=‘数学‘ AND C.KEMU=‘英语‘;

得到以下数据

新人小白一枚,如果有什么不对的地方望各位大佬多多指点

原文地址:https://www.cnblogs.com/shiyusdream/p/12009815.html

时间: 2024-11-09 07:00:21

select * from 后有多个表的使用方法(已知一个表的结构为xxx 怎样通过select语句把他变成以下结构)的相关文章

MySql中把一个表的数据插入到另一个表中的实现代码--转

MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码.下面我以mysql数据库为例分情况一一说明: 1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: ?

oracle从各个表取得数据保存到另一个表

从各个表中取得数据保存另一个表中: CREATE VIEW PARAMETER_view ASWITH tall AS ( SELECT p.PI_NO,--产品序列号 p.SERIALNO,--产品编号 p.PI_NAME,--产品名称 p. PI_START_DATE,--产品起息日 p.PI_END_DATE,--产品期日期 p.PI_CUSTOMER_YIELD/100 PI_CUSTOMER_YIELD, --产品收益率 a.AI_NO, --资产序列号 a.CAS_ASSETS_NA

mysql中把一个表的数据批量导入另一个表中(不同情况)

mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段. 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中. 类别一. 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:(此方法只适合导出两表在同一database) INSERT INTO 目标表 SELECT * FROM 来源表;

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

SQL实现将一个表的数据插入到另外一个表的代码

--第一种情况的 1>如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表; 2>比如要将 articles 表插入到 newArticles 表中,则是: INSERT INTO newArticles SELECT * FROM articles; 3>如果只希望导入指定字段,可以用这种方法: INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM

mysql从一个表中拷贝数据到另一个表中sql语句

这一段在找新的工作,今天面试时,要做一套题,其中遇到这么一句话,从一个表中拷贝所有的数据到另一个表中的sql是什么? 原来我很少用到,也没注意过这个问题,面试后我上网查查,回来自己亲手写了写,测试了下,确实有的.现在我记录下. 这个语句是:insert into A select * from B;这个语句根据需要变化,字段一定要一致: 另一种是MySQL复制表结构及数据到新表:CREATE TABLE 新表 SELECT * FROM 旧表;例子sql语句:CREATE TABLE new_t

将一个数据表的数据复制到另一个表

1 声名表a,b 2 --b表存在(两表结构一样)insert into b select * from a 3 若两表只是有部分(字段)相同,则 4 insert into b(col1,col2,col3,col4,...) select col1,col2,col3,col4,... from a where... 5 把表a插入到表b中去. 6 --b表不存在select * into b from a 7 8 select (字段1,字段2,...) into b from a

sqlite expert导入excel表格 (包括使用问题、以及把 一个表的数据插入到另一个表中)

一.sqlite导入excel 1.打开要导入的excel --- 另存为(2007版点击左上角OFFICE图标即可找到) --- 保存类型:CSV类型 (提示什么不兼容什么的,一律点确定.) 2.打开sqlite expert ,选择建好的数据库文件(或者是导入的已存在的db文件,或者是自己新建一个.db数据库文件). 右击文件名---选择最后一个import text file(CSV,TSV) 3.(如果没有建过和这个excel名相同的表)右边Destination选择第一项new tab

Oracle查询一个表的数据插入到另一个表

1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: insert into tab1 select * from tab2; 3.同一个表中,将A字段的指赋给B字段: update table_name set B =  A; 4. 将一个表的字段数据插入到另一个表的字段数据中 insert into XTHAME.tab1(pk_bdversion,vbdco