0

我有 2 张桌子。一个表有 3 行,另一个表有 5 行。我想将这两个表连接在一起,结果应该分别显示 3 行和 5 行。有没有什么方法可以使用 sql 语句来实现?任何帮助将不胜感激。

4

1 回答 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 回答