我有 2 张桌子。一个表有 3 行,另一个表有 5 行。我想将这两个表连接在一起,结果应该分别显示 3 行和 5 行。有没有什么方法可以使用 sql 语句来实现?任何帮助将不胜感激。
问问题
51 次
1 回答
2
你可以用UNION
这个,
SELECT colA, colB, colC, 1 as OrderThis
FROM tableA
UNION ALL
SELECT colA, colB, colC, 2 as OrderThis
FROM tableB
ORDER BY OrderThis ASC
有两个基本的使用规则UNION
- 两个查询的列数必须相同
- 数据类型必须兼容
UNION
有一个可选参数ALL
。如果省略ALL
参数,UNION
将清楚地显示组合的所有唯一记录。
如您所见,我添加了一个虚拟列 OrderThis
。这将是您的行排序的基础。但问题是它会显示在您的结果列表中。解决方案是将其包装在子查询中,
SELECT colA, colB, colC
FROM
(
SELECT colA, colB, colC, 1 as OrderThis
FROM tableA
UNION ALL
SELECT colA, colB, colC, 2 as OrderThis
FROM tableB
) a
ORDER BY OrderThis ASC
于 2012-09-14T03:17:42.540 回答