2017-05-07 92 views
0

我試圖找出一個查詢,以實現以下情況下輸出的唯一值抓取的唯一行,下面是我的表中的數據基於列的MySQL

table entries

標識 - >主鍵表1 請求ID - > FK(表2的PK)

標識 - >多對一 - >請求ID列

問題: 我會得到的SID列中的值(LIST - >能成爲一個現在假設我得到一個列表('121','122'),我應該得到下面的結果,query result

說明: 1.行與Id - > 3, 4,5,6,7是不需要的,因爲我只需要具有SID組合的行(121,122)

  1. 假設我得到一個SID列表('121' ),那麼結果應該是在如下狀態,其中query result 2在SID具有121即使有其它項,但它們具有相同的申請ID,其存在於其它行以及..

因此底線是即時消息嘗試獲取請求ID,它只有SID的組合。如果SID列表有2個值,那麼我希望具有相同請求ID的行同時請求ID不應存在於另一個SID中列表。

我被困在這個查詢過去2天,任何幫助將不勝感激。

編輯:SQlFiddle - >http://sqlfiddle.com/#!9/98484b/1

+1

這真的很無助於把你的數據的圖像你的問題。爲什麼?因爲我們的回覆者有時會嘗試使用http://sqlfiddle.com重現您的問題。但是如果我們必須重新輸入數據,我們不會嘗試。請[編輯]你的問題。獲得答案的最佳方法是自己創建sqlfiddle。 –

+0

我已經用小提琴鏈接更新了我的問題..希望它有幫助 – user2159399

回答

0
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)