如何使用 SQL Server 找到从事同一专业但居住在不同城市的医生

问题描述 投票:0回答:2

我在 sql server 中有一张名为 doctors 的表。目标是选择所有从事同一专业但来自不同城市的医生。我尝试了下面的两个代码选项,但它们没有产生预期的结果。我将感谢您的帮助See image of doctors table

select * from doctors s
    join doctors c
    on s.specialty = c.specialty 
    and c.doctor_id <> s.doctor_id
where s.city <> c.city
SELECT DISTINCT d1.first_name, 
    d1.specialty,
    d1.city AS city1,
    d2.city AS city2
FROM doctors d1`your text`
JOIN doctors d2 ON d1.specialty = d2.specialty 
AND d1.doctor_id <> d2.doctor_id
WHERE d1.city <> d2.city;`your text`
sql-server sql-server-2008 inner-join
2个回答
0
投票

尝试这个查询;

SELECT DISTINCT d1.first_name, 
    d1.specialty,
    d1.city AS city1,
    d2.city AS city2
FROM doctors d1
JOIN doctors d2 ON d1.doctor_id <> d2.doctor_id  
WHERE d1.city <> d2.city and d1.specialty = d2.specialty

另外,你的连接条件只能是id不相等。而你的where条件应该是城市和特产。


0
投票

你的问题有点不清楚。您的意思是希望所有医生都符合该条件,例如:

SELECT *
FROM doctors AS d
WHERE city != ANY
    (SELECT city
    FROM doctors AS e
    WHERE d.specialty = e.specialty);

还是你真的希望所有的医生都满足这样的条件:

SELECT d.doctor_id, d.first_name, d.last_name, d.city, e.doctor_id, e.first_name, e.last_name, e.city
FROM doctors AS d, doctors AS e
WHERE d.specialty = e.specialty
AND d.city != e.city;

希望这些查询之一接近您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.