gpt4 book ai didi

mysql - MySQL基于列的唯一值获取唯一行

转载 作者:行者123 更新时间:2023-11-29 19:01:42 25 4
gpt4 key购买 nike

我正在尝试找出一个查询来实现以下场景的输出,下面是我的表数据

table entries

Id -> 主键表1请求id -> FK(table2的PK)

Id -> 多对一 -> 请求 ID 列

问题:我将从 UI 获取 SID 列值(LIST -> 可以是一个或多个值),现在假设我得到一个列表 ('121','122'),我应该得到以下结果,query result

说明:1. 不需要 Id -> 3,4,5,6,7 的行,因为我只需要具有 SID(121,122) 组合的行

  • 假设我得到的 SID 列表为 ('121') ,那么结果应如下所示,query result 2,即使还有其他条目的 SID 为 121,但它们具有相同的请求 ID,该请求 ID 存在于其他行中嗯..
  • 所以底线是我试图获取仅包含 SID 组合的请求 id ..如果 SID 列表有 2 个值,那么我希望具有相同请求 id 的行,同时请求 id 不应该出现在另一个中SID 除外。

    过去 2 天我一直被这个查询困扰,任何帮助将不胜感激。

    编辑:SQlFiddle -> http://sqlfiddle.com/#!9/98484b/1

    最佳答案

    MariaDB [sandbox]> CREATE TABLE T(ID INT,REQUESTID INT, SID INT);
    Query OK, 0 rows affected (0.28 sec)

    MariaDB [sandbox]>
    MariaDB [sandbox]> INSERT INTO T VALUES
    -> (1,1,121),(2,1,122),
    -> (3,2,121),(4,3,123),
    -> (5,3,121),(6,3,125),
    -> (7,3,126),(8,4,121),
    -> (9,4,122);
    Query OK, 9 rows affected (0.06 sec)
    Records: 9 Duplicates: 0 Warnings: 0

    MariaDB [sandbox]>
    MariaDB [sandbox]>
    MariaDB [sandbox]> SELECT T.ID,S.* FROM
    -> (
    -> SELECT REQUESTID ,GROUP_CONCAT(ID),GROUP_CONCAT(SID ORDER BY SID) SID
    -> FROM T
    -> GROUP BY REQUESTID
    -> ) S
    -> JOIN T ON T.REQUESTID = S.REQUESTID
    -> WHERE S.SID = '121,122';
    +------+-----------+------------------+---------+
    | ID | REQUESTID | GROUP_CONCAT(ID) | SID |
    +------+-----------+------------------+---------+
    | 1 | 1 | 1,2 | 121,122 |
    | 2 | 1 | 1,2 | 121,122 |
    | 8 | 4 | 8,9 | 121,122 |
    | 9 | 4 | 8,9 | 121,122 |
    +------+-----------+------------------+---------+
    4 rows in set (0.02 sec)

    MariaDB [sandbox]>
    MariaDB [sandbox]> SELECT T.ID,S.* FROM
    -> (
    -> SELECT REQUESTID ,GROUP_CONCAT(ID),GROUP_CONCAT(SID ORDER BY SID) SID
    -> FROM T
    -> GROUP BY REQUESTID
    -> ) S
    -> JOIN T ON T.REQUESTID = S.REQUESTID
    -> WHERE S.SID = '121';
    +------+-----------+------------------+------+
    | ID | REQUESTID | GROUP_CONCAT(ID) | SID |
    +------+-----------+------------------+------+
    | 3 | 2 | 3 | 121 |
    +------+-----------+------------------+------+
    1 row in set (0.02 sec)

    关于mysql - MySQL基于列的唯一值获取唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43830383/

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