Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于SELF的SQL子查询_Sql_Postgresql - Fatal编程技术网

基于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]