当前位置: 首页 > 知识库问答 >
问题:

由于查询中的限制而丢失信息

漆雕彦
2023-03-14

我有一个表tablename和列col1-col10。不是每行都填充了col4,但每行都填充了col1、col2、col3。我想在col4满足条件时获取所有{col1,col2,col3}元组,然后从TableName中获取与元组{col1,col2,col3}匹配的所有行。

select t.*
from mytable t
where exists (
    select 1
    from mytable t1
    where 
        t1.col1 = t.col1 
        and t1.col2 = t.col2 
        and t1.col3 = t.col3 
        and t1.col4 >= 1000
)
LIMIT 1000

我怎样才能做到这一点?

共有1个答案

孔鸿云
2023-03-14

您没有提到哪个数据库,但下面的查询应该运行得更快。你可以做:

select t.*
from t
join (
  select distinct col1, col2, col3 
  from t
  where col4 >= 1000
  limit 100
) x on t.col1 = x.col1 and t.col2 = x.col2 and t.col3 = x.col3;

使用以下索引,查询应该会变得更快:

create index ix1 on t (col4, col1, col2, col3);

create index ix2 on t (col1, col2, col3);
 类似资料:
  • 我怎样才能让我的查询在查询时不丢失连接?

  • 我试图以CSV格式保存py spark . SQL . data frame . data frame(也可以是其他格式,只要它易于阅读)。 到目前为止,我找到了几个示例来保存DataFrame。然而,每次我编写它时,它都会丢失信息。 数据集示例: 为了将这个文件保存为CSV,我首先尝试了这个解决方案: 不幸是,这导致了以下错误: 这就是我尝试另一种可能性的原因,将spark数据帧转换成panda

  • 问题内容: 我在Eclipse中收到以下错误消息: 这是什么意思?在同一主题上还有另一个SO问题,但在这种情况下似乎不适用。我没有创建一个新的Java类,而是尝试使用一个。 问题答案: 猜测您正在使用的另一个库也需要Apache Commons I /O,但是版本不同。拥有一段代码(以传递方式)可以访问同一软件包的两个版本有些棘手。您可能可以安排它,以便您的代码和其他库使用相同的版本。使用CLAS

  • 问题内容: 如何限制JPQL命名查询的选择查询?我需要在查询级别本身而不是在Java层中完成限制!!!我正在尝试使用 但徒劳!!! 请建议 问题答案: 没有提供限制查询的机制。这通常是通过使用上的方法来实现的。如果必须避免在Java代码中指定此内容,则可以在包含查询并执行限制的数据库中进行查看。然后像将表一样将实体映射到此视图。 例:

  • 问题内容: 我正在构建一个小界面,希望用户能够写出他们的 整个 sql语句,然后查看返回的数据。但是,我不希望用户能够做任何有趣的事情,即。实际上,我希望用户能够做的唯一一件事就是运行语句。我知道没有特定的SQLite用户,所以我在考虑要制定的一套规则来拒绝某些查询。也许是正则表达式字符串之类的东西(正则表达式使我有些害怕)。关于如何做到这一点的任何想法? 问题答案: 我可以为您的问题建议另一种方

  • 我对DynamoDB上的查询/扫描限制有疑问。 我的表有1000条记录,对所有记录的查询都返回50个值,但是如果我把设为5,这并不意味着查询将返回前5个值,它只是说对5个项目的查询表(以任何顺序,所以它们可能是非常旧的项目或新的项目),所以我有可能在查询中得到0个项目。如何实际获得查询的最新5项?我需要设置一个为5(数字是例子),因为查询/扫描更多的项目会很昂贵。 该查询具有此输入 我的表的索引是