📜  如何根据日期从两个表中提取数据 SQL?

📅  最后修改于: 2022-05-13 01:54:46.564000             🧑  作者: Mango

如何根据日期从两个表中提取数据 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';

输出:

我们可以看到,这两个数据中的数据都是根据查询中指定的日期提取的。