在一个初级Oracle开发人员职位的面试中有人问我这个问题,面试官承认这是一个艰难的过程:
编写查询以检查表’employees_hist’是否与表’employees’完全相同。任何想法如何去做?
编辑:考虑到表可以有重复的记录,因此在这种情况下,简单的MINUS将不起作用。
例子
EMPLOYEES
NAME
--------
Jack Crack
Jack Crack
Jill Hill
这两个是不一样的。
EMPLOYEES_HIST
NAME
--------
Jack Crack
Jill Hill
Jill Hill
解决重复项的一种可能的解决方案是创建一个子查询,该子查询对两个表执行UNION,并通过对所有列进行分组来包括每个表中包含的重复项数量。然后,外部查询可以对所有列进行分组,包括行计数列。如果表匹配,则不应返回任何行:
create table employees (name varchar2(100));
create table employees_hist (name varchar2(100));
insert into employees values ('Jack Crack');
insert into employees values ('Jack Crack');
insert into employees values ('Jill Hill');
insert into employees_hist values ('Jack Crack');
insert into employees_hist values ('Jill Hill');
insert into employees_hist values ('Jill Hill');
with both_tables as
(select name, count(*) as row_count
from employees
group by name
union all
select name, count(*) as row_count
from employees_hist
group by name)
select name, row_count from both_tables
group by name, row_count having count(*) <> 2;
给你:
Name Row_count
Jack Crack 1
Jack Crack 2
Jill Hill 1
Jill Hill 2
这告诉您两个名称在一个表中出现一次,在另一个表中出现两次,因此表不匹配。
问题内容: 我正在尝试编写一个查询,该查询将检查MySQL中的特定表是否具有特定列,如果没有,则创建它。否则什么都不做。在任何企业级数据库中,这实际上都是一个简单的过程,但是MySQL似乎是一个例外。 我以为 可以工作,但是失败很严重。有办法吗? 问题答案: 这对我来说很好。 使用PHP就像…
如果表已经存在,如何检查TarantoolSQL?
问题内容: 我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。 当您用Google搜索答案时,会得到很多不同的答案。有官方/后向和向前兼容的方式吗? 这是两种可能的方法。两种方法中的哪一种是标准/最佳方法? 第一种方式: 第二种方式: MySQL提供的简单 陈述。我正在寻找类似的东西。 问题答案: 对于此类查询,最好始终使用INFORMATION_
问题内容: 我有两个表,例如: 表A是我的源表,表B是目标表。现在,我需要一个查询,该查询可以在表A中找到所有不同的(附加)行,因此可以使用这些行来更新表B。因此,我需要一个查询,该查询从表A中找到以下行: 这样的查询有什么好的方法?它应该尽可能高效(避免过多的联接)。谢谢你的帮助! 问题答案: 我将使用NOT EXISTS结构。
问题内容: 我有下表Goods_In_Wagon(Goods_ID,Wagon_ID,Total_Weight)。我需要创建一些if语句检查约束,说 “如果WAGON_ID在90到99之间,则Total_Weight必须大于10。” AND“如果WAGON_ID在100到110之间,则Total_Weight必须大于20。” AND“如果WAGON_ID在111到120之间,则Total_Weig
问题内容: 为什么… 在给定…的情况下导致编译时出现不兼容的类型错误 … 才不是? 为什么我可以比较String和Object的对象引用,而不比较StringBuilder和String的对象引用?它们不是都只是指向存储位置吗? 谢谢 问题答案: 根据Java语言规范(15.21.3): 如果无法通过强制转换将任何一个操作数的类型转换为另一个操作数的类型,则将发生编译时错误(第5.5节)。两个操作