![](/img/trans.png)
[英]SQL query to get all records with a unique value of one column from two tables
[英]SQL Two Tables with One Unique column
我有两个表tbl_backupchecks和tbl_backupchecks_sqlbak。
这两个表都有两个列名称,Company和ServerName。
我想返回一个包含Company和Servername但在合并列表中的结果集。 本质上,如果tbl_backupchecks_SQLBak中有一个服务器名和公司名,而tbl_backupchecks中没有,我也想对此进行报告。
用基本的术语来说,我想要的是两列的行结果集; 公司和服务器名称。 我尝试编写左连接,但它回购了两个名为ServerName的列。 能做到吗?
假设您的Company
列和Servername
是可以是DISTINCT的数据类型,则可以使用UNION查询:
SELECT Company, Servername FROM tbl_backupchecks
UNION
SELECT Company, Servername FROM tbl_backupchecks_sqlbak
我认为工会应该为您做到这一点
SELECT Company, ServerName
FROM tbl_backupchecks
UNION
SELECT Company, ServerName
FROM tbl_backupchecks_sqlbak
使用UNION:
SELECT Company, ServerName
FROM tbl_backupchecks
UNION
SELECT Company, ServerName
FROM tbl_backupchecks_sqlbak
我想您想要一个UNION:
对于两个表之间的不同行,请使用以下命令:
SELECT Company,ServerName
FROM tbl_backupchecks
UNION
SELECT Company,ServerName
FROM tbl_backupchecks_sqlbak
对于两个表中的所有行(不会删除两个表中存在的重复行),请使用以下命令:
SELECT Company,ServerName
FROM tbl_backupchecks
UNION ALL
SELECT Company,ServerName
FROM tbl_backupchecks_sqlbak
SELECT Company, ServerName FROM tbl_backupchecks
UNION
SELECT Company, ServerName FROM tbl_backupchecks_sqlbak
(更改UNION
到UNION ALL
如果你想保留副本。)
如果您只希望两者都有唯一记录,请使用以下命令:
SELECT DISTINCT Company, ServerName
FROM
(
SELECT Company, ServerName FROM tbl_backupchecks
UNION
SELECT Company, ServerName FROM tbl_backupchecks_sqlbak
) A
我认为您希望将2个表合并。 就像是:
SELECT Company, ServerName FROM tbl_backupchecks
UNION
SELECT Company, ServerName FROM tbl_backupchecks_SQLBak
我发现这可能对您有帮助。 我起初虽然是工会,但这看起来是一种更好的方法: t-sql比较两个表的记录,该表不存在于第二个表中
这是一个解决方案,还可以告诉您记录在哪里
select Company, ServerName, sum(case when is_bak=0 then 0 else 1) as in_bak, sum(case when is_bak=0 then 1 else 0) as in_not_bak from (
select Company, ServerName,0 as is_bak from tbl_backupchecks union
select SELECT Company, ServerName, 1 as is_bak FROM tbl_backupchecks_SQLBak
) group by Company, ServerName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.