【问题标题】:Pulling one line for a join on one column拉一条线以连接一列
【发布时间】:2018-04-10 06:18:17
【问题描述】:

我想为两个具有匹配街道但不同值的人提取一条记录,以及在数据库中不共享地址的所有记录,patunique 是表的 ID。

例如:

Select patunique, last, first, birth, street 
from patient p1, patient p2 
where p2.street = p1.street

数据:

Patunique,Last,First,Birth,Street 1,Jackson,Fred,01/20/1972,1234 Telegraph Street 2,杰克逊,弗兰克,1997 年 11 月 21 日,电报街 1234 号 3,Picasso,Pablo,05/18/1942,5678 电话路

预期结果:

Patunique,Last,First,Birth,Street 1,Jackson,Fred,01/20/1972,1234 Telegraph Street 3,Picasso,Pablo,05/18/1942,5678 电话路

即使在街道上使用MAX,它也会提取重复记录,因为 patunique、last、first 和birth 是分开的。

【问题讨论】:

  • 发布一些样本数据和想要的结果。
  • patient 的主键是什么?

标签: sql


【解决方案1】:

--请试试这个查询

CREATE TABLE patient (Patunique INT,Last VARCHAR(50),First VARCHAR(50),Birth DATE,Street VARCHAR(50))
DROP TABLE patient
INSERT INTO patient VALUES
(1,'Jackson','Fred','01/20/1972','Telegraph Street')
,(2,'Jackson', 'Frank','11/21/1997', 'Telegraph Street')
,(3,'Picasso','Pablo','05/18/1942','Telephone Road')

Select P1.patunique, P1.last, P1.first, P1.birth, P1.street 
from patient p1
INNER JOIN(
Select P2.street, min(P2.patunique)patunique
from patient p2
group by P2.street
)p2 on p2.patunique = p1.patunique

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2011-04-28
    • 2018-05-02
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    相关资源
    最近更新 更多