簡體   English   中英

SQL-查找鍵等於值的所有“關系ID”,然后選擇包含那些“關系ID”的所有記錄

[英]SQL - Find all “Relationship IDs” where key equals value, then select all records containing those “Relationship IDs”

我有一個巨大的痛苦的繼承表,其中包含幾百萬條記錄,我無法高效查詢。 該表看起來像這樣:

id | submissionId | key     | value
------------------------------------
1  | 1            | userID  | 1
2  | 1            | data    | stuff
3  | 2            | userID  | 2
4  | 2            | data    | stuff2
5  | 2            | data2   | stuff3
6  | 3            | userID  | 1
7  | 3            | data    | stuff2
8  | 3            | data2   | stuff3

我要查詢的是為特定用戶選擇所有“提交數據”。 因此, userID === 1的結果將僅選擇與userID相關的“提交數據”,即:

1  | 1            | userID  | 1
2  | 1            | data    | stuff
6  | 3            | userID  | 1
7  | 3            | data    | stuff2
8  | 3            | data2   | stuff3

目前,我最好的解決方案是為特定的userID選擇所有記錄。 然后遍歷結果,並將submittingID放入數組。 然后,選擇我的數組中submissionID與submissionID匹配的所有記錄。

因為大約有15,000個用戶也需要循環通過,所以這變得非常耗時。 任何使此效率更高或在單個查詢中的想法將不勝感激!

你可以簡單地查詢具有任何記錄submissionId與特定value

SELECT *
FROM submissions
WHERE submissionId IN (SELECT submissionId
                       FROM submissions
                       WHERE value = 1 AND key = 'userID')

您可以嘗試使用EXISTS

SELECT *
FROM mytable AS t1
WHERE EXISTS (SELECT *
              FROM mytable AS t2
              WHERE t2.submissionId = t1.submissionId AND
                    t2.key = 'userID' AND t2.value = 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM