SQL新手
假设我们有两个表
一个人有ID和Name列:
+----+-------+
| ID | Name |
+----+-------+
| 1 | Sam |
| 1 | Dan |
+----+-------+
第二个也有两列如下:
+----+------------+
| ID | Relatives |
+----+------------+
| 1 | Uncle |
| 2 | Aunty |
+----+------------+
如果我们进行内连接,我们只会获得条件满足的行。但我希望输出像
+------+------------+
| ID | Relatives |
+------+------------+
| 1 | Uncle |
| NULL | Aunty |
+------+------------+
一旦只显示ID列中的值。如果出现两次或三次,则应为null。
告诉我是否有可能?以及两种情况如何。
由于您的问题不明确,所以假设您需要从表id
中检索a
和name
,并且您还希望避免重复行,那么选项可以是使用b
和distinct
:
left join
结果:
select distinct a.id, b.name
from b
left outer join a
on b.id = a.id
order by id desc
+------+-------+
| id | name |
+------+-------+
| 1 | Uncle |
| NULL | Aunty |
+------+-------+
试试这个:
DEMO
这就是我得到的:
SELECT
T1.Id,
T2.Relatives
FROM SecondTable T2
LEFT JOIN FirstTable T1
ON T1.ID = T2.ID
GROUP BY T1.Id,
T2.Relatives
输出:
CREATE TABLE #a (
id int,
name varchar(10)
)
CREATE TABLE #b (
id int,
name varchar(10)
)
INSERT INTO #a
VALUES (1, 'sam')
INSERT INTO #a
VALUES (1, 'Dan')
INSERT INTO #b
VALUES (1, 'Uncle')
INSERT INTO #b
VALUES (2, 'Aunty')
SELECT
T1.Id,
T2.name
FROM #b T2
LEFT JOIN #a T1
ON T1.ID = T2.ID
GROUP BY T1.Id,
T2.name
DROP TABLE #a
DROP TABLE #b
希望,这是你在问题中提出的问题。