[英]Select rows that have the same column value based on another column's field values
在我的表中,我有3列,分別是SubmissionId, FieldName, FieldValue
。 我有一個查詢:
SELECT SubmissionId, FieldName, FieldValue
FROM myTable
WHERE (FieldValue = "Soccer")
OR (FieldValue = "Main Hall")
OR (FieldValue = "August 23, 2017")
返回以下內容:
1508 | ClassLocation | Main Hall
1509 | EventName | Soccer
1512 | EventName | Soccer
1516 | ClassLocation | Main Hall
1520 | EventName | Soccer
1520 | EventDate | August 23, 2017
1520 | ClassLocation | Main Hall
1523 | EventName | Soccer
1524 | EventName | Soccer
1525 | ClassLocation | Main Hall
1538 | EventName | Soccer
1539 | EventName | Soccer
1539 | EventDate | August 23, 2017
1539 | ClassLocation | Main Hall
1540 | ClassLocation | Main Hall
1550 | ClassLocation | Main Hall
我現在正在嘗試找出添加到此查詢的最佳方法,這樣我只能從重復自身3次的SubmissionId列中獲取字段值,在這種情況下,它將是1520和1539的提交ID。提前為您提供幫助,這讓我難過了一段時間。
嘗試:
SELECT SubmissionId, COUNT(SubmissionId)
FROM YourTable
GROUP BY SubmissionId
HAVING COUNT(SubmissionId) = 3
SELECT SubmissionId
FROM myTable
WHERE FieldValue in ('Soccer','Main Hall', 'August 23, 2017')
GROUP BY SubmissionID
HAVING count(Distinct fieldName) = 3
我使用一種特殊的情況,即fieldValue可以為給定的SubmitID重復。
您還可以綁定FieldName,以確保配對映射
WHERE (FieldName, FieldValue) in (('EventName','Soccer'),('ClassLocation','Main Hall'),('EventDate','August 23, 2017'))
只需將當前查詢用作子查詢進行匯總
SELECT SubmissionId
FROM ( SELECT SubmissionId, FieldName, FieldValue
FROM myTable
WHERE FieldValue IN ( "Soccer", "Main Hall", "August 23, 2017")
) as T
GROUP BY SubmissionId
HAVING COUNT(*) = 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.