我需要一个查询来检查是否在T3中,对于每个Id1,我们根据T2有所有Id2,返回上面的结果表 在表T2中,id1只有id2所以在结果中我们只有id2与id1 = 1在同一行中,而name3只在该行中排列
答案 0 :(得分:0)
SELECT T2.Id1
, CASE WHEN count(DISTINCT Id2) > 1 THEN 'All'::text
ELSE min(Id2)::text END AS Id2
, string_agg(DISTINCT Name3, ',') AS Name3
FROM T2
LEFT JOIN T3 USING (Id1, Id2)
GROUP BY T2.Id1
HAVING bool_or(T3.Id1 IS NULL) IS FALSE;
假设所有标识符都没有引用,因此有效地区分大小写。
通常我会添加更多解释,但我会在问题中与沉默相匹配。