我有以下表格数据:
问:如何仅检索以黄色突出显示的行?
思考:我尝试过的是按照ID_2列进行SUM(A),SUM(B),SUM(C)列和分组。之后,使用B = 1或A = 1的WHERE子句进行过滤以检索记录。但是,根据选择标准,我也得到了第一张唱片(A23,C1)。这就是我想避免检索的内容。
1)第一个标准始终是检索B = 1作为同一ID_2的优先级。
2)第二个标准是仅在考虑第一个标准的情况下检索A = 1的那些标准。因此,基于ID_2,如果已经检索到有效的B = 1记录,则不应检索两次。
在这种情况下,优选A34而不是A23 (例如,如果基于ID_2,A或B都有1,我会仅想要 排 其中B = 1。此外,A67,A89也被检索。
感谢生成此SELECT语句的帮助。
答案 0 :(得分:1)
我认为这就是你想要的:
如果是这样,那么这可以用这个SQL完成:
SELECT ID_1, ID_2, A, B, C
FROM tableName t1
WHERE B = 1
OR ( A = 1
AND Not Exists (
SELECT 1
FROM tableName t2
WHERE t1.ID_2 = t2.ID_2
AND B = 1)
)
您可以按如下方式制作汇总版本:
SELECT ID_2, SUM(A), SUM(B), SUM(C)
FROM tableName t1
WHERE B = 1
OR ( A = 1
AND Not Exists (
SELECT 1
FROM tableName t2
WHERE t1.ID_2 = t2.ID_2
AND B = 1)
)
GROUP BY ID_2