繁体   English   中英

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

[英]Fetching a unique Row Based on a unique value of a column MySQL

我正在尝试找出一个查询以实现以下情况的输出,以下是我的表数据

表条目

ID->主键table1请求ID-> FK(表2的PK)

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

问题:我将从用户界面中获取SID列值(LIST->可以是一个或多个值),现在假设我正在获取列表('121','122'),我应该得到以下结果, 查询结果

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

  1. 假设我得到的SID列表为('121'),则结果应如下所示, 查询结果2 即使有其他条目的SID中有121,但它们具有相同的请求ID,也存在于其他行中。

因此,最重要的是IM试图获取仅具有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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM