SQL新手
假设我们有两个表
其中一个有ID和Name列:
+----+-------+
| ID | Name |
+----+-------+
| 1 | Sam |
| 1 | Dan |
+----+-------+
第二个也有两列如下:
+----+------------+
| ID | Relatives |
+----+------------+
| 1 | Uncle |
| 2 | Aunty |
+----+------------+
如果我们进行内连接,我们只会获得condtion满足的行。但我希望输出像是
+------+------------+
| ID | Relatives |
+------+------------+
| 1 | Uncle |
| NULL | Aunty |
+------+------------+
只应显示ID列中的值。如果出现次数是两次或三次,则应该为空。
告诉mw是否有可能?以及两种情况如何。
答案 0 :(得分:2)
试试这个:
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
<强>输出:强>
Id name
NULL Aunty
1 Uncle
希望,这是你在问题中提出的问题。
答案 1 :(得分:2)
由于您的问题不明确,因此假设您需要从表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 强>