加入相关问题

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

SQL新手

假设我们有两个表

一个人有ID和Name列:

+----+-------+
| ID |  Name |
+----+-------+
|  1 | Sam   |
|  1 | Dan   |
+----+-------+

第二个也有两列如下:

+----+------------+
| ID |  Relatives |
+----+------------+
|  1 | Uncle      |
|  2 | Aunty      |
+----+------------+

如果我们进行内连接,我们只会获得条件满足的行。但我希望输出像

+------+------------+
|  ID  |  Relatives |
+------+------------+
| 1    | Uncle      |
| NULL | Aunty      |
+------+------------+

一旦只显示ID列中的值。如果出现两次或三次,则应为null。

告诉我是否有可能?以及两种情况如何。

mysql sql ssms
2个回答
2
投票

由于您的问题不明确,所以假设您需要从表id中检索aname,并且您还希望避免重复行,那么选项可以是使用bdistinct

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 | +------+-------+


2
投票

试试这个:

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

希望,这是你在问题中提出的问题。

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