gpt4 book ai didi

优先选择列值的 SQL 选择

转载 作者:行者123 更新时间:2023-12-04 23:36:02 28 4
gpt4 key购买 nike

我是 SQL 新手,我想问一下如何根据首选项和分组选择条目。

+----------+----------+------+
| ENTRY_ID | ROUTE_ID | TYPE |
+----------+----------+------+
| 1 | 15 | 0 |
| 1 | 26 | 1 |
| 1 | 39 | 1 |
| 2 | 22 | 1 |
| 2 | 15 | 1 |
| 3 | 30 | 1 |
| 3 | 35 | 0 |
| 3 | 40 | 1 |
+----------+----------+------+

对于上表,我想为每个 ENTRY_ID 选择 1 个条目。对返回的 ROUTE_ID 具有以下偏好:
  • IF TYPE = 0 可用
    对于具有相同 ENTRY_ID 的任何条目, 返回最小值 ROUTE_ID对于所有带有 TYPE = 0 的条目
  • 如果相同 ENTRY_ID只有TYPE = 1可用,返回最小值ROUTE_ID

  • 查询的预期结果如下:

    +----------+----------+------+
    | ENTRY_ID | ROUTE_ID | TYPE |
    +----------+----------+------+
    | 1 | 15 | 0 |
    | 2 | 15 | 1 |
    | 3 | 35 | 0 |
    +----------+----------+------+

    感谢您的帮助!

    最佳答案

    您可以同时分组 TYPEENTRY_ID ,然后使用 HAVING子句过滤掉那些TYPE不是该记录的最小值。

    SELECT ENTRY_ID, MIN(ROUTE_ID), TYPE
    FROM MyTable
    GROUP BY ENTRY_ID, TYPE
    HAVING TYPE = (SELECT MIN(s.TYPE) FROM MyTable s WHERE s.ENTRY_ID = MyTable.ENTRY_ID)

    这依赖于类型只能是 0 或 1。如果有更多可能的值,它只会返回最低的类型。

    关于优先选择列值的 SQL 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55490955/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com