基于SELF的SQL子查询
我有一个包含以下数据的表格:基于SELF的SQL子查询,sql,postgresql,Sql,Postgresql,我有一个包含以下数据的表格: licence_number date_of_birth organisation 我想在以下位置执行查询: 在组织1中获取许可证编号和DOB,其中 许可证号码和DOB位于Organization2中 我知道这不会那么难,但我很挣扎。你可以根据许可证号码和出生日期分组,其中组织设置为两个感兴趣的组织中的任何一个,并计算一个组中有多少不同的组织 select from t t0 where organization = 'organization1'
licence_number
date_of_birth
organisation
我想在以下位置执行查询:
在组织1中获取许可证编号和DOB,其中
许可证号码和DOB位于Organization2中
我知道这不会那么难,但我很挣扎。你可以根据许可证号码和出生日期分组,其中组织设置为两个感兴趣的组织中的任何一个,并计算一个组中有多少不同的组织
select
from t t0
where
organization = 'organization1'
and
exists (
select 1
from t
where
organization = 'organization2'
and
licence_number = t0.licence_number
and
date_of_birth = t0.date_of_birth
)
如果在一个组中有两个可能,那么你就成功了
SELECT license_number, date_of_birth
FROM mytable
WHERE organisation IN ('organisation1', 'organisation2')
GROUP BY license_number, date_of_birth
HAVING COUNT(DISTINCT organisation) = 2;
…或者您可以使用INTERSECT
.您可以自行加入表格,其中许可证号码和日期相同,但组织不相同:
SELECT DISTINCT p1.licence_number, p1.date_of_birth
FROM people p1
INNER JOIN people p2
ON p1.licence_number = p2.licence_number AND
p1.date_of_birth = p2.date_of_birth AND
p1.organisation <> p2.organisation
它是联接表还是1表
Select
[licence_number],
[date_of_birth],
[organisation]
From YourTable
Where organisation1 = organisation2
--OR
Select
[licence_number],
[date_of_birth],
[organisation]
From YourTable
Where organisation1 IN ('organisation2','organisation3','organisation3')
Order By [licence_number]
挣扎?请展示你奋斗的结果。这确实是一个糟糕的迹象,表明高代表性用户没有回答OP的问题,即使OP投入了任何努力,也没有符合要求。请看这里:2个由组合代表大于100k的用户回答。@Satwikanadkarny,并不是说这是一个好问题,但必须显示一个最低限度的理解接近的原因已经消失了,我能看到的问题已经清楚地说明了。如果你能找到一个合适的接近理由,请随意投票支持接近。@JoachimIsaksson这里的重点不是关于最低限度的理解。它是关于帮助和指导人们在他们所挣扎的领域。这个问题没有任何努力的迹象,更多的是一个给我代码plz类的问题。这就是问题所在@JoachimIsaksson,顺便说一句,如果你是这么想的话,仅仅说我在挣扎不能被认为是“真正的努力”。这对于Postgres和任何其他符合标准的数据库来说都是无效的SQL。你想要开源,那么MySQL是什么让你相信有两个表?你从这两个地方得到了相同的组织。重点是什么?@ClodoaldoNeto谢谢,你完全正确。我更新了答案以回答正确的事情:谢谢你,intersect-这是我所需要的。出于某种原因,我试图加入。完全忘记了intersect。@joop可能是因为投票人既不理解问题也不理解答案
Select
[licence_number],
[date_of_birth],
[organisation]
From YourTable
Where organisation1 = organisation2
--OR
Select
[licence_number],
[date_of_birth],
[organisation]
From YourTable
Where organisation1 IN ('organisation2','organisation3','organisation3')
Order By [licence_number]