sql如何将多个表合并成一个表

sql如何将多个表合并成一个表,第1张

--复杂点的方法,

DECLARE @startTime DATETIME --开始的时间

DECLARE @endTime DATETIME --结束的时间

                       

--比如我要得到1月到2月的数据

SET @startTime = '2014-01-01 00:00:00000' --从新年第一天开始

SET @endTime = GETDATE() --一直到当前时间

--准备创建表

--根据月份创建

DECLARE @mi INT

--(这里必须要是开始时间和结束时间在一年之内的情况,如果不是在一年以内则要另外考虑,懒得写)

SET @mi = MONTH(@endTime) - MONTH(@startTime) + 1 --用结束月份减去开始月份,得到总共要创建几个月份表(加上当前月份)

--PRINT @mi

WHILE @mi >0

BEGIN

DECLARE @tableName VARCHAR(6) --月份表名

DECLARE @sql NVARCHAR(1000)

SET @tableName = '2014'

IF @mi<10

BEGIN

SET @tableName = @tableName + '0'

END

SET @tableName = @tableName + CAST(@mi AS VARCHAR)

IF NOT EXISTS (SELECT FROM sysobjects WHERE [name] = @tableName AND [type] = 'U')

BEGIN

--如果当前月份表不存在,创建当前月份表

SET @sql = 'CREATE TABLE '+@tableName + ' (MId INT PRIMARY KEY IDENTITY(1,1))'

PRINT @sql

--执行

--EXECUTE sp_executesql N@sql

END

DECLARE @dayName VARCHAR(8) --天表名

WHILE CONVERT(VARCHAR(6),@endTime,112)=@tableName --确定当前时间是否是当前月的

BEGIN

SET @sql = ''

SET @dayName = CONVERT(VARCHAR(8),@endTime,112)

SET @sql = 'INSERT INTO '+@tableName +' VALUES SELECT FROM ' + @dayName

PRINT @sql

--执行

--EXECUTE sp_executesql N@sql

SET @sql = ''

SET @endTime = DATEADD(DAY,-1,@endTime)

END

SET @mi = @mi - 1 --月份减一

END

/

------------------------------------------------------------

CREATE TABLE 201402 (MId INT PRIMARY KEY IDENTITY(1,1))

INSERT INTO 201402 VALUES SELECT FROM 20140219

INSERT INTO 201402 VALUES SELECT FROM 20140218

INSERT INTO 201402 VALUES SELECT FROM 20140217

INSERT INTO 201402 VALUES SELECT FROM 20140216

INSERT INTO 201402 VALUES SELECT FROM 20140215

INSERT INTO 201402 VALUES SELECT FROM 20140214

INSERT INTO 201402 VALUES SELECT FROM 20140213

INSERT INTO 201402 VALUES SELECT FROM 20140212

INSERT INTO 201402 VALUES SELECT FROM 20140211

INSERT INTO 201402 VALUES SELECT FROM 20140210

INSERT INTO 201402 VALUES SELECT FROM 20140209

INSERT INTO 201402 VALUES SELECT FROM 20140208

INSERT INTO 201402 VALUES SELECT FROM 20140207

INSERT INTO 201402 VALUES SELECT FROM 20140206

INSERT INTO 201402 VALUES SELECT FROM 20140205

INSERT INTO 201402 VALUES SELECT FROM 20140204

INSERT INTO 201402 VALUES SELECT FROM 20140203

INSERT INTO 201402 VALUES SELECT FROM 20140202

INSERT INTO 201402 VALUES SELECT FROM 20140201

CREATE TABLE 201401 (MId INT PRIMARY KEY IDENTITY(1,1))

INSERT INTO 201401 VALUES SELECT FROM 20140131

INSERT INTO 201401 VALUES SELECT FROM 20140130

INSERT INTO 201401 VALUES SELECT FROM 20140129

INSERT INTO 201401 VALUES SELECT FROM 20140128

INSERT INTO 201401 VALUES SELECT FROM 20140127

INSERT INTO 201401 VALUES SELECT FROM 20140126

INSERT INTO 201401 VALUES SELECT FROM 20140125

INSERT INTO 201401 VALUES SELECT FROM 20140124

INSERT INTO 201401 VALUES SELECT FROM 20140123

INSERT INTO 201401 VALUES SELECT FROM 20140122

INSERT INTO 201401 VALUES SELECT FROM 20140121

INSERT INTO 201401 VALUES SELECT FROM 20140120

INSERT INTO 201401 VALUES SELECT FROM 20140119

INSERT INTO 201401 VALUES SELECT FROM 20140118

INSERT INTO 201401 VALUES SELECT FROM 20140117

INSERT INTO 201401 VALUES SELECT FROM 20140116

INSERT INTO 201401 VALUES SELECT FROM 20140115

INSERT INTO 201401 VALUES SELECT FROM 20140114

INSERT INTO 201401 VALUES SELECT FROM 20140113

INSERT INTO 201401 VALUES SELECT FROM 20140112

INSERT INTO 201401 VALUES SELECT FROM 20140111

INSERT INTO 201401 VALUES SELECT FROM 20140110

INSERT INTO 201401 VALUES SELECT FROM 20140109

INSERT INTO 201401 VALUES SELECT FROM 20140108

INSERT INTO 201401 VALUES SELECT FROM 20140107

INSERT INTO 201401 VALUES SELECT FROM 20140106

INSERT INTO 201401 VALUES SELECT FROM 20140105

INSERT INTO 201401 VALUES SELECT FROM 20140104

INSERT INTO 201401 VALUES SELECT FROM 20140103

INSERT INTO 201401 VALUES SELECT FROM 20140102

INSERT INTO 201401 VALUES SELECT FROM 20140101

/


sql 两表联合查询。, listview怎么实现载入两张表联合查询。sql语句我知道。后面后面怎么这整

select a栏位1,b栏位2 from 表a,表b where 表a相同栏位=表b相同栏位

sql联合查询语句(两张表)是什么

sql联合查询语句(两张表)是:

select AID,AVALUE,ATYPE,ANAME,BKEY,BID,BVALUE,BNAME 
min(VALUE),max(VALUE) from A left join B on AID = BID
where BNAME="你输入的名字" 
and BVALUE > (select min(VALUE) from B where NAME="你输入的名字")) 
and BVALUE < (select min(VALUE) from B where NAME="你输入的名字"));

延展阅读:

A表字段stuid,stuname。

B表字段bid,stuid,score,coursename,status。

要用一条sql查出A表中所有记录的对应的stuid,max(score),coursename,status,并且status=1,sql语句要求跨资料库,不能使用rownum,,limit等方言。

比如资料:

A

stuid stuname

11 zhangshan

22 lisi

B

bid sutid coursename scoure status

a 11 yuwen 66 1

b 11 shuxue 78 1

c 11 huaxue 95 0
最后要得到的资料是

stuid couresname scoure status

11 shuxue 78 1

22 null null null

如何用QT实现两张表的查询及联合查询?

SELECT  FROM 表1 JOIN 表2 ON 表1列3 = 表2列4
注:表1的列3必须与表2的列4相同。

sql三表联合查询

select from tb1,tb2,tb3 where (tb1id=tb2id) and (tb2id=tb3id) and tb1xx=xx

用SQL对两个表的联合查询

是分别查前20条?selectcol1,col2,col3,sTimefrom(selectcol1,col2,col3,sTimefromtb1orderbysTimedesc)rownum<21unionallselectcol1,col2,col3,sTimefrom(selectcol1,col2,col3,sTimefromtb2orderbysTimedesc)rownum<21

SQL查询两个表联合查询怎么写?

如下方法:

select 1 a姓名 , bminnum , bmaxnum from a INNER JOIN b ON aid = bid where bminnum > 40 or bmaxnum < 40。

1、SQL的解释:结构化查询语言(英文简称:SQL)是一种特殊目的的程式语言,是一种资料库查询和程式设计语言,用于存取资料以及查询、更新和管理关系资料库系统;同时也是资料库指令码档案的副档名。它不要求使用者指定对资料的存放方法,也不需要使用者了解具体的资料存放方式,所以具有完全不同底层结构的不同 资料库系统,,可以使用相同的结构化查询语言作为资料输入与管理的介面。

2、SQL的语句结构:其语句,也称为“资料检索 语句”,用以从表中获得资料,确定资料怎样在应用程式给出。保留字 SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他型别的SQL语句一起使用。

两张表联合查询,需要整合两张表不同的栏位~表1 ID ,name,gae 表2 ID yangr date 要得到 ID name gae yangr

select 表1id,表1name,表1gae,表2ygngr
from 表1 ,表2
where 表1id=表2id

mysql两表联合查询

两个表需要有共同的栏位用来做对应关系,假定表a 的ab栏位和表b 的bc栏位意义是一样的:
新建两张表:
表a:ab ac ad
1 1 2
2 3 4
3 5 6
表b: bc bd be
1 7 8
3 9 10
4 11 12
(此时这样建表只是为了演示连线SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)
一、外连线
外连线可分为:左连线、右连线、完全外连线。
1、左连线 left join 或 left outer join
SQL语句:select 表aab,表aac,表aad,表bbc,表bbd,表bbe from 表a left join 表b on 表aab=表bbd执行结果以ab行为准:
表:ab ac ad bc bd be
1 1 2 1 7 8
2 3 4 0 0 0
3 5 6 3 9 10
其中b表bc第二行的值在ab中没有对应的所以左连无法找出来,同理右连会变成这样:
SQL语句:select 表aab,表aac,表aad,表bbc,表bbd,表bbe from 表a left join 表b on 表aab=表bbd执行结果以bd行为准:
表:ab ac ad bc bd be
1 1 2 1 7 8
3 5 6 3 9 10
0 0 0 4 11 12
左外连线包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为0
注:此时我们不能说结果的行数等于左表资料的行数。当然此处查询结果的行数等于左表资料的行数,因为左右两表此时为一对一关系。
右外连线包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为0。
注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表资料的行数,因为左右两表此时为一对一关系。
3、完全外连线 full join 或 full outer join
SQL语句:select 表aab,表aac,表aad,表bbc,表bbd,表bbe from 表a full join 表b on 表aab=表bbd执行结果:
表:ab ac ad bc bd be
1 1 2 1 7 8
2 3 4 0 0 0
3 5 6 3 9 10
0 0 0 4 11 12
完全外连线包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为0,如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为0。
二、内连线 join 或 inner join
SQL语句:select 表aab,表aac,表aad,表bbc,表bbd,表bbe from 表a inner join 表b on 表aab=表bbdinner join 是比较运算子,只返回符合条件的行。
表:ab ac ad bc bd be
1 1 2 1 7 8
3 5 6 3 9 10
三、交叉连线 cross join
1概念:没有 WHERE 子句的交叉联接将产生连线所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
表a: ab
星期
星期二
星期三
表b: cd
张三
李四
王五
SELECT aab,bcd FROM 表a CROSS JOIN 表b
ab cd
星期一 张三
星期一 李四
星期一 王五
星期二 张三
星期二 李四
星期二 王五
星期三 张三
星期三 李四
星期三 王五

合并结果一般用union或者union all,具体用什么取决于需求。

如数据如下:

A表:

id    name

1      张三

2      李四

3      王五

B表:

id     name

1       张三

2       赵六

3       孙七

如果

select id,name from A
union all
select id,name from B;

结果:

id    name

1      张三

2      李四

3      王五

1      张三

2      赵六

3      孙七

如果:

select id,name from A
union
select id,name from B;

结果:

id    name

1      张三

2      李四

3      王五

2      赵六

3      孙七

也就是说union all在执行后,不会把相同的结果合并,而union会把相同的结果只显示成一行。

select isnull(aname,bname) as name,isnull(ahobby,’—’) as hobby,isnull(bage,null) as age
From 表1 a
Full join 表2 b on aname =bname

先将两张表联合在一起,然后再对联合后的表进行查询。例如:
select sum(tquantity) as totalQty from
(select from t1
union all
select from t2)t;

select top 10 from
(select from 表1
union all
select from 表2) as T
order by 某字段union
all就是把俩表连接
然后把他俩连接的结果集起名叫T
然后你就可以用top了

你可以直接运行一下括号里那句,如果表结构相同你两个可以用,如果部分字段相同,你就要把在一起的字段写到一起了,比如
select id,name from 表1
union all
select id,name from 表2类似这样


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13399511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存