执行以下操作需要哪些SQL代码? :
我有一个表(让我们随意调用表'Names'):
ID | Name1 | Name2
---+--------+-------
1 | Fred | Jack
2 | Jack | Jim
3 | Jill | Fred
4 | Jim | Jack
等
我想要生成的是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查询会更简单吗?如果是这样,那会是什么样的。
答案 0 :(得分: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字段,它会变得如此简单 - 它只是在那时选择一列。
答案 1 :(得分:-2)
SELECT ID, Name1 as Names FROM person
UNION
SELECT ID, Name2 as Names FROM person
。 。你的意思是“没有连接”?