SQL 2个查询结果合并到同一个结果
在实际工作中,有时候我们需要将两个查询的结果合并到同一个结果集中,以方便查看和分析数据。SQL提供了多种方法来实现这个需求,包括使用UNION、UNION ALL和INNER JOIN等方式。本文将详细介绍这些方法的用法,帮助读者更好地理解和应用。
使用UNION关键字合并查询结果
UNION关键字用于合并两个查询的结果集,并去除重复行。下面是一个示例,我们有两个查询,分别查询了不同的内容:
-- 查询1
SELECT name, age, gender
FROM table1
WHERE age > 20;
-- 查询2
SELECT name, age, gender
FROM table2
WHERE gender = 'male';
如果我们想将这两个查询的结果合并到同一个结果集中,可以使用UNION关键字:
SELECT name, age, gender
FROM table1
WHERE age > 20
UNION
SELECT name, age, gender
FROM table2
WHERE gender = 'male';
运行以上SQL语句后,将会得到两个查询结果的合并,并去除重复行。如果想要保留重复行,可以使用UNION ALL关键字。
使用UNION ALL关键字合并查询结果
UNION ALL关键字和UNION关键字类似,用于合并两个查询的结果集,但是不去重。下面是一个示例,我们有两个查询,分别查询了不同的内容:
-- 查询3
SELECT city, population
FROM table3
WHERE country = 'China';
-- 查询4
SELECT city, population
FROM table4
WHERE country = 'USA';
如果我们想将这两个查询的结果合并到同一个结果集中,并保留重复行,可以使用UNION ALL关键字:
SELECT city, population
FROM table3
WHERE country = 'China'
UNION ALL
SELECT city, population
FROM table4
WHERE country = 'USA';
运行以上SQL语句后,将会得到两个查询结果的合并,并保留重复行。
使用INNER JOIN关键字合并查询结果
除了使用UNION和UNION ALL关键字进行查询结果的合并外,我们还可以使用INNER JOIN关键字进行关联查询。下面是一个示例,我们有两个表,表A和表B,分别存储了不同的信息:
-- 表A
CREATE TABLE tableA (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
-- 表B
CREATE TABLE tableB (
id INT PRIMARY KEY,
gender VARCHAR(10),
salary INT
);
如果我们想要将这两个表中的信息进行合并查询,可以使用INNER JOIN关键字:
SELECT tableA.name, tableA.age, tableB.gender, tableB.salary
FROM tableA
INNER JOIN tableB
ON tableA.id = tableB.id;
运行以上SQL语句后,将会得到表A和表B的信息合并的结果集,其中通过表A和表B的id进行关联。
总结
本文详细介绍了在SQL中如何将两个查询结果合并到同一个结果集中,包括使用UNION、UNION ALL和INNER JOIN等方法。读者可以根据具体的需求选择合适的方法,以达到最佳的查询效果。