0

我需要什么 SQL 代码来执行以下操作?:

我有一张表(让我们随意称表为“名称”):

ID | Name1  | Name2
---+--------+-------
1  | Fred   | Jack
2  | Jack   | Jim
3  | Jill   | Fred
4  | Jim    | Jack

ETC

我想要生成的是 Name1 和 Name2 的单个列表(我什至不关心分组或排序),但我想保留与名称的原始“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 查询会更简单吗?如果是这样,那会是什么样子。

4

2 回答 2

1

您可以使用此表单来包含 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 字段,它会变得如此简单——它只是在那时选择一列。

于 2013-04-29T00:27:57.017 回答
-2
SELECT ID, Name1 as Names FROM person
UNION
SELECT ID, Name2 as Names FROM person

?

. . 您所说的“不连接”是什么意思?

于 2013-04-29T00:15:19.310 回答