📜  sql 从多个表中选择没有连接 - SQL (1)

📅  最后修改于: 2023-12-03 14:47:37.220000             🧑  作者: Mango

SQL中选择没有连接的多个表

当我们在使用多个表进行关联查询时,有些情况下我们需要选择没有连接的表,也就是不需要把表中的数据关联起来,直接选择表中的数据进行查询。在SQL中可以通过子查询、UNION、EXCEPT等方式来实现这一需求。

子查询

子查询是指在SELECT、FROM、WHERE语句中嵌套使用的SELECT语句。子查询可以在SELECT语句的列中使用,也可以在FROM语句中作为表使用。

使用子查询选择没有连接的多个表可以采用以下方式:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2)

以上语句中,子查询在WHERE语句中使用,选择的是table2表中的id列,而主查询则选择的是table1表中不包含子查询中id列的所有数据。

UNION

UNION是用于合并两个或多个SELECT语句的关键字,合并的结果不包含重复的行。如果我们要选择没有连接的多个表,则可以将多个SELECT语句使用UNION进行合并。

SELECT * FROM table1 UNION SELECT * FROM table2

以上语句选择的是table1和table2表中的所有数据,并且只返回不重复的数据。

EXCEPT

EXCEPT是用于从第一个SELECT语句中选择出去第二个SELECT语句中存在的数据,结果中不包含重复行。

SELECT * FROM table1 EXCEPT SELECT * FROM table2

以上语句选择的是table1表中不包含table2表中的数据,并且只返回不重复的数据。

通过以上三种方式,我们可以实现选择没有连接的多个表的需求。但是需要注意的是,这种方式可能会降低查询效率,所以需要根据具体情况选择合适的方式。