【问题标题】:SQL - Filtering using a very large population of unsorted filtersSQL - 使用大量未排序的过滤器进行过滤
【发布时间】:2021-07-08 12:32:30
【问题描述】:

我有一个大型数据集,我想从中选择一个样本。样本总体或多或少是随机选择的,因此我无法使用范围来提取这些记录。我需要使用大约 10k 个不同的值。

我能想到的一种方法是使用 WHERE 子句,但这感觉效率低下,我不确定在执行时是否也会导致问题...

UoD_ID = 3021235
或 3021352
或 3035235 ... x 10,000 个过滤器

干杯,

【问题讨论】:

  • 您有 UoD_ID 可在 where 子句中使用?这些将如何选择?随机还是有人会选择那些?
  • 提示:IN。你似乎想要in
  • 这取决于您的 DBMS:例如:SELECT column FROM table ORDER BY RAND() LIMIT 10000.. 请提供更多详细信息。
  • @KaziMohammadAliNur 是的,我应该指定 - 已经选择了 10k 个样本。我有他们的 ID,现在需要从更广泛的人群中获取更多关于他们的信息。
  • 将值放入另一个表并进行连接?

标签: sql filter


【解决方案1】:

您可以使用所有这些 ID 创建一个逗号分隔的字符串,并将其与 IN 子句一起使用,如下所示:

WHERE UoD_ID in( 3021235,3021352, 3035235 ... x 10,000 )

或者您将所有这些 ID 插入一个表中并在 where 子句中使用该表,如下所示:

Insert into idtable values(3021235);
Insert into idtable values(3021352);
.
.
.

where UoD_ID  in (select UoD_ID  from idtable)

我想建议你第二个选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多