如何使用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