如何使用sql从具有不同列的两个表中获取不同的记录

Posted

技术标签:

【中文标题】如何使用sql从具有不同列的两个表中获取不同的记录【英文标题】:How to get different records from two tables with different columns using sql 【发布时间】:2014-06-05 03:37:52 【问题描述】:

我遇到了 SQL 问题。我想从具有不同列数的两个不同表中获取不同的记录,这些表具有相同的主键。 我试过“EXCEPT”和“MINUS”,但由于两个表的列数不同,我收到了错误。

还有其他的 sql 命令可以用来获取我想要的记录吗?

谢谢, 最小

【问题讨论】:

JOINS 怎么样? blog.codinghorror.com/a-visual-explanation-of-sql-joins你能显示你的代码吗? 使用内连接。 dev.mysql.com/doc/refman/5.0/en/join.html 【参考方案1】:

你可以使用 INNER JOIN Like:

SELECT table1.column1, table2.column3
FROM table1 INNER JOIN table2
ON table1.column1=table2.column1;

【讨论】:

【参考方案2】:

键列等于 NULL 条件的 FULL OUTER JOIN 可以帮助您解决问题。 这是示例 SELECT 语句

/*
create table Tab1(id int, col1 varchar(10))
create table Tab2(id int, col2 varchar(10), col3 int)

insert into tab1 select 1,'Kodyaz'
insert into tab1 select 2,'Vader'
insert into tab2 select 2,'Star Wars', 6
insert into tab2 select 3,'SQL', 2014
*/
select * 
from tab1
full outer join tab2 on tab1.id = tab2.id
where 
tab1.id is null
or tab2.id is null

希望对你有帮助

【讨论】:

【参考方案3】:

试试这个:

SELECT t1.table1column1, t1.table1column2, t1.table1column3, t2.table2column1, t2.table2column2, t2.table2column3 FROM table1 t1 JOIN table2 t2 ON t1.table1column1 = t2.table2column1

【讨论】:

以上是关于如何使用sql从具有不同列的两个表中获取不同的记录的主要内容,如果未能解决你的问题,请参考以下文章

单个查询从具有不同列的多个表中获取记录

如何从另一个 SQL 表中获取两个不同列的匹配数据:Inner Join 和/或 Union?

如何使用 SSMA(用于访问 SQL Server)将具有不同列的表迁移到现有表中?

如何使用 Nhibernate 从连接两个具有所有 id 的表中选择只有一个不同列的多个列是 UNIQUEIDENTIFIER

如何检索表的值以获取sql中两列的最大值

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?