RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1593199
Accepted
ulxanxv
ulxanxv
Asked:2024-09-08 17:18:27 +0000 UTC2024-09-08 17:18:27 +0000 UTC 2024-09-08 17:18:27 +0000 UTC

如何请求唯一记录(DISTINCT)以及在相同记录中选择所需值的机制?

  • 772

我需要从数据库中选择按日期唯一的行。理想情况下,这样的行很少,但如果遇到,那么您只需在其中选择一个值。 DISTINCT 只是假设一个唯一性过滤器,但它并不关注它选择的记录。让我们举一个更好的例子:

+--+---------+---------------+---------------+--------------------------+
|id|credit_id|some_property_1|some_property_2|date                      |
+--+---------+---------------+---------------+--------------------------+
|1 |1        |3              |null           |2024-01-01 00:00:00.000000|
|2 |1        |null           |false          |2024-02-01 00:00:00.000000|
|3 |1        |3              |true           |2024-03-01 00:00:00.000000|
|4 |1        |3              |null           |2024-03-01 00:00:00.000000|
|5 |1        |3              |null           |2024-03-01 00:00:00.000000|
+--+---------+---------------+---------------+--------------------------+

因此,这里您需要按credit_id降序返回所有记录(为了测试,它们在这里都是 1),date如果date它们相同,那么这样的子列表中的优先级(我们这样称呼它)将赋予记录some_property_2 != null(如果有这样的> 1,则其中任何一个)。即如果相等,则date根据上述条件只显示一条记录。必须显示所有列。请求的结果应该是这样的:

+--+---------+---------------+---------------+--------------------------+
|id|credit_id|some_property_1|some_property_2|date                      |
+--+---------+---------------+---------------+--------------------------+
|3 |1        |3              |true           |2024-03-01 00:00:00.000000|
|2 |1        |null           |false          |2024-02-01 00:00:00.000000|
|1 |1        |3              |null           |2024-01-01 00:00:00.000000|
+--+---------+---------------+---------------+--------------------------+

Database PostgreSQL,但建议编写可移植的查询,即所有数据库的标准。如果这是不可能的,那么,我当然会对原生的感到满意。我还在Spring和标签中指出Java- 因为我正在使用这些工具编写此逻辑,并且很高兴能在该语言中找到解决方案,但这里有一些微妙之处:

  1. 需要分页
  2. 仅仅对所有记录进行“正面”搜索是不合适的,因为可能有 10,000 条记录,但要将它们放在前面,有条件地只需要 20 条,这样的查询性能将为零。

PS我并不是要求你在这里帮我解决问题。我面临一个真正的问题,但我不知道如何SQL解决它。

java
  • 2 2 个回答
  • 40 Views

2 个回答

  • Voted
  1. Best Answer
    talex
    2024-09-08T19:33:08Z2024-09-08T19:33:08Z

    我最近遇到了类似的问题。

    诀窍在于maxfromnull等于null 且null小于任何值。

    with uniq as (
        select credit_id, date, max(some_property_2::integer) some_property_2 from tmp
        group by credit_id, date
    )
    select t.* from uniq u left join tmp t 
     on u.credit_id=t.credit_id 
    and u.date=t.date
    and (u.some_property_2=t.some_property_2::integer
        or u.some_property_2 is null and t.some_property_2 is null);
    
    • 1
  2. Дмитрий Рихтер
    2024-09-09T02:08:32Z2024-09-09T02:08:32Z
    select distinct on (date) * from public.test order by date,some_property_2;
    

    但distinct on并没有在所有SQL中都实现

    • 0

相关问题

  • wpcap 找不到指定的模块

  • 如何以编程方式从桌面应用程序打开 HTML 页面?

  • Android Studio 中的 R.java 文件在哪里?

  • HashMap 初始化

  • 如何使用 lambda 表达式通过增加与原点的距离来对点进行排序?

  • 最大化窗口时如何调整元素大小?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5