如何根据日期从两个表中提取数据 SQL?
在本文中,我们将看到,如何编写 SQL 查询以根据日期从两个表中提取数据。我们可以通过对表执行 UNION 操作来执行上述函数。 UNION 操作附加两个查询的结果并将结果作为一个集合返回。
UNION 关键字的使用方法:
- UNION ALL:包括重复项。
- UNION:排除重复项。
句法:
SELECT * from table1 (query1)
UNION
SELECT * from table2 (query2);
在使用 UNION 关键字之前需要遵循一些规则:
- 查询中列的数量和顺序必须相同。
- 所选字段的数据类型必须相同。
出于演示目的,请执行以下步骤:
第一步:创建数据库
我们可以使用以下命令创建一个名为 geeks 的数据库。
询问:
CREATE DATABASE geeks;
第二步:使用数据库
使用以下 SQL 语句将数据库上下文切换到极客:
询问:
USE geeks;
第三步:表定义
我们的极客数据库中有两个名为“demo_table1”和“demo_table2”的表。
查询(demo_table1):
CREATE TABLE demo_table1(
ID int,
NAME VARCHAR(20),
AGE INT,
CITY VARCHAR(20) ,
DOB DATE);
查询(demo_table2):
CREATE TABLE demo_table2(
ID int,
NAME VARCHAR(20),
AGE int,
DOB DATE);
第 4 步:将数据插入表中
查询(demo_table1):
INSERT INTO demo_table1 VALUES
(11,'Romy',23,'Delhi','1999-11-30'),
(23,'Rahul',23,'Delhi','1998-10-01'),
(31,'Nikhil',24,'Punjab','1990-05-03'),
(46,'Ranvir',23,'Punjab','2002-10-09'),
(52,'Samiksha',23,'Banglore','2017-08-10'),
(61,'Ashtha',24,'Banglore','2001-09-10'),
(77,'Tannu',30,'Patna','1996-08-01'),
(89,'Girish',30,'Patna','1930-09-30');
查询(demo_table2):
INSERT INTO demo_table2 VALUES
(31,'Fanny',25, '1996-07-08' ),
(77,'Prem', 30, '2003-05-09'),
(15,'Preeti',21, '2001-02-02'),
(46,'Samita',32, '1994-07-23'),
(09,'Rajan',45, '1993-05-05');
第五步:查看内容
执行以下查询以查看表的内容
查询(demo_table1):
SELECT * FROM demo_table1;
输出:
查询(demo_table2):
SELECT * FROM demo_table2;
输出:
第 6 步:SQL 查询根据日期从两个表中提取数据。为了演示,我们将提取在“1990-01-01”到“2000-01-01”日期之间具有 DOB 的数据。
询问:
SELECT d1.NAME, d1.AGE, d1.DOB
FROM demo_table1 d1 WHERE DOB BETWEEN
'1990-01-01' and '2000-01-01'
UNION
SELECT d2.NAME, d2.AGE, d2.DOB
FROM demo_table2 d2 WHERE DOB BETWEEN
'1990-01-01' and '2000-01-01';
输出:
我们可以看到,这两个数据中的数据都是根据查询中指定的日期提取的。