如何将两个字段的两个结果集连接(不连接)为一个长列表
问题描述:
执行以下操作需要什么SQL代码? :如何将两个字段的两个结果集连接(不连接)为一个长列表
我有一个表(让任意调用表“名称”):
ID | Name1 | Name2
---+--------+-------
1 | Fred | Jack
2 | Jack | Jim
3 | Jill | Fred
4 | Jim | Jack
等
我想是产生是NAME 1和NAME(我的一个列表甚至不关心分组或排序)作为这样的,但我想保持原来的“ID”协会名称为:
ID | Names
---+------
1 | Fred
1 | Jack
2 | Jill
2 | Jim
3 | Jack
3 | Jim
4 | Fred
4 | Jack
为什么我要这么做?因为它看起来很容易,而且作为一个SQL编码器,我应该可以执行这个任务,但是我找不到能够创建此输出的解决方案。更进一步,我只设法找到想要连接字段的人,这是一个简单的任务,但我对连接不感兴趣。
附加问题:如果Name1字段与Name2不在同一个表中,SQL查询是否会有很大差异? (如果它不同,它会是什么样子?)
附加问题:如果我们不关心ID字段,SQL查询会更简单吗?如果是这样,那将是什么样子。
答
SELECT ID, Name1 as Names FROM person
UNION
SELECT ID, Name2 as Names FROM person
?
。 。你的意思是“没有连接”?
答
你可以使用这个表单来包含id,并给你一个特定的ID排序。
SELECT n.id, n.name1 FROM names n
UNION
SELECT m.id, m.name2 from names m
ORDER BY id ASC;
如果它是在一个不同的表,使用UNION的没有改变,因为我们从表带来的结果结合起来,并通过ID进行排序。但这并不意味着数据是相关的。
SELECT n.id, n.name FROM name_one n
UNION
SELECT m.id, m.name from name_two m
ORDER BY id ASC;
如果我们不关心ID字段,它会非常简单 - 它只是在那一点上选择一列。
“拼接”一词是指将两个字符串连接在一起;例如'A + B'='AB'。我不想这样做。 – Drooten 2013-04-29 00:18:43
那么我认为'UNION'会做。但是你实际上正在做两个分离的查询,然后加入它们。如果你想要重复的话,可以使用'UNION ALL'。 – 2013-04-29 00:19:25
UNION不起作用,因为它只保留相关记录。在过去,我尝试过UNION ALL。但我需要弄清楚如何保持身份证。干杯。 – Drooten 2013-04-29 00:22:37