sqlite3 内连接比较所有列

Posted

技术标签:

【中文标题】sqlite3 内连接比较所有列【英文标题】:sqlite3 inner join comparing all columns 【发布时间】:2015-10-30 15:25:53 【问题描述】:

我有一个 sqlite 数据库,其中包含两个具有相同架构的表 t1、t2。这些表包含多个列 c1、c2、..、cn(超过 50 个)。 我试图找到两个表中存在且相同的整体。 我遇到的问题是一次比较所有列。显然,我不想明确比较每一列。两个表的示例:

SELECT t1.*
FROM t1
INNER JOIN t2
ON t1.c1 = t2.c1
AND t1.c2 = t2.c2
...
AND t1.cn = t2.cn

我想我可以使用 python 的 sqlite3 模块生成这个巨大的查询,但我想知道是否有更优雅的方法。

谢谢

【问题讨论】:

【参考方案1】:

在compound SELECT 中,比较子查询中的所有列:

SELECT * FROM t1
INTERSECT
SELECT * FROM t2;

【讨论】:

【参考方案2】:

Sqlite 应该支持NATURAL JOIN,默认情况下通过所有“匹配”列连接。

SELECT
t1.*
FROM t1
NATURAL JOIN t2

【讨论】:

以上是关于sqlite3 内连接比较所有列的主要内容,如果未能解决你的问题,请参考以下文章

复合条件连接,内连接,左右连接,自然连接,等值连接

mysql命令总结

bzoj 1059 矩阵游戏

比较内连接和外连接 SQL 语句

MySQL 查询

在列内添加逗号分隔值