我在 sql server 中有一张名为 doctors 的表。目标是选择所有从事同一专业但来自不同城市的医生。我尝试了下面的两个代码选项,但它们没有产生预期的结果。我将感谢您的帮助
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`
尝试这个查询;
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条件应该是城市和特产。
你的问题有点不清楚。您的意思是希望所有医生都符合该条件,例如:
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;
希望这些查询之一接近您的需求。