SQL如何选择在同一个语句返回的值

问题描述:

我真的不知道如何使这个问题的具体问题,所以我会尽我所能来解释SQL如何选择在同一个语句返回的值

有问题的表具有场景以下专栏。

**Table#1 Patients** 
-PatID 
-Name 
-Guarantor FK_PatID (Refer to Patients Table) 

好吧,让我们说我想从一个SQL查询中选择患者姓名和他的保证人的名字。

SELECT p.Name, p.Guarantor 
FROM Patients P 

这种说法会得到我的病人的名字和担保人的PatID,但我怎么能匹配保证人的ID来获得它的名字在相同的SQL语句?

+0

功课问题一个经典的例子? – 2013-05-08 20:36:55

+0

不太可能。更像是一个刚接触SQL的开发人员。 – Renan 2013-05-08 20:37:12

+0

你确实拥有保证人的姓名吗?也许在第二张桌子? – 2013-05-08 20:38:02

您可以在自己

SELECT P.Name, P.Guarantor, P2.Name 
FROM Patients P 
INNER JOIN Paitents P2 on P2.PatId = P.Guarantor 
+0

谢谢..这就是我要找的=) – Jay 2013-05-08 20:59:01

Select p.name from Patients p where 
p.guarantor in (select p1.guarantor from patients p1 where name = 'foo') 

这将让你的担保人的名称为所有患者称为加入牌桌。您只需在另一个查询的where子句中使用查询。

+0

这里的IN运算符是一种以1:1关系完成自连接的方式。 – 2013-05-08 20:41:16

这是SELF JOIN

SELECT 
P1.Name, 
P1.Guarantor+ 'is Guarantor of' +P2.Name 
FROM Patients P1 
INNER JOIN Paitents P2 on P2.PatId = P1.Guarantor 

类似STACK OVERFLOW QUESTION