我有两个相同(6)列和不同条目的表。我想获得一个具有相同列的“主”表,包括表A和表B中的每个唯一条目。两个表上都没有主键或外键,并且条目的“唯一性”由每个表确定。 6个字段与另一个条目相同。换句话说,如果条目x的列1等于条目y的列1,并且所有其余列也相等,则这两个条目被认为是非唯一的,无论它们是存在于同一个表中还是存在于单独的表中。我已经研究并找到了类似的解决方案,但没有一个能够解决这个问题。有什么想法吗?
答案 0 :(得分:1)
您可以使用union语句:
(
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table1
) UNION (
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table2
)
GROUP BY column1, column2, column3
HAVING COUNT(column1, column2, column3)>0
答案 1 :(得分:1)
UNION
肯定是这里需要的,但@PhilCross的查询中有一些无关的项目:
不需要GROUP BY
来展平结果,因为UNION
在选择所有列时自然会这样做。
同样,也不需要HAVING
。
MySQL将忽略UNION SELECT
查询中的列别名,因为第一个SELECT
列表确定了结果的列名。 UNION
所需要的只是(a)所有SELECT
语句中的列数相同,以及(b)相应列的兼容数据类型 - 相同或隐式可转换。
也不需要括号,但如果它使查询更具可读性,则应包括它们。
所以你真正需要的是以下内容:
SELECT column1 AS column1, column2 AS column2, column3 AS column3
FROM table1
UNION SELECT column1, column2, column3
FROM table2