有谁知道我在哪里可以找到一个常见但困难(不寻常)的SQL脚本示例库.我说的是你在文档中找不到的那些例子,但是经常需要完成诸如查找重复等任务.
拥有类似的东西可能会节省大量时间.
编辑:谢谢大家,我认为这是一个很好的快速参考.描述越多,效果就越好,所以如果你看到你的方式打开请 - 请编辑并添加一些可以找到的描述.非常感谢那些已经这样做的人!
用于查找重复条目的SQL(在组内)
我有一个小问题,我不确定什么是解决它的最佳方法,因为我只能有限地访问数据库(Oracle)本身.在我们的表"EVENT"中,我们有大约160k个条目,每个EVENT都有一个GROUPID,而一个普通条目恰好有5个行具有相同的GROUPID.由于一个错误,我们目前得到了几个重复的条目(重复,所以10行而不是5行,只是一个不同的EVENTID.这可能会改变,所以它只是<> 5).我们需要过滤这些组的所有条目.
由于对数据库的访问受限,我们无法使用临时表,也无法向GROUPID列添加索引以使其更快.
我们可以使用此查询获取GROUPID,但我们需要第二个查询来获取所需的数据
select A."GROUPID"
from "EVENT" A
group by A."GROUPID"
having count(A."GROUPID") <> 5
Run Code Online (Sandbox Code Playgroud)
一个解决方案是子选择:
select *
from "EVENT" A
where A."GROUPID" IN (
select B."GROUPID"
from "EVENT" B
group by B."GROUPID"
having count(B."GROUPID") <> 5
)
Run Code Online (Sandbox Code Playgroud)
没有GROUPID和160k条目的索引,这需要太长时间.试着考虑一个可以处理这个问题的联接,但到目前为止找不到一个好的解决方案.
有人可以为此找到一个好的解决方案吗?
小编辑:我们这里没有100%的重复,因为每个条目仍然有一个唯一的ID,GROUPID也不是唯一的(这就是为什么我们需要使用"group by") - 或者我可能只是错过了一个简单的解决方案它:)
关于数据的小例子(我不想删除它,只是找到它)
EVENTID | GROUPID | TYPEID
123456 123 12
123457 123 145
123458 123 2612
123459 123 41
123460 123 238
234567 123 12
234568 123 145
234569 123 2612
234570 123 41
234571 123 238
它有更多的列,如时间戳等,但正如你已经看到的,除了EVENTID之外,一切都是相同的.
我们将更频繁地运行它进行测试,找到错误并检查它是否再次发生.
我正在努力解决一些问题,我不知道如何做以下事情
问:找到两台或更多台PC之间相同的硬盘大小.
它在本网站上的q15 .
数据库方案由四个表组成:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
Run Code Online (Sandbox Code Playgroud)
任何指针将不胜感激.
编辑:这是pc表中所有硬盘驱动器的列表以及正确答案应该是什么.
