在SQL中比较具有不同列号的两个表

问题描述

我正在使用Sybase进行sql编码。

我正在比较具有相同列的表,如下所示:

SELECT name,date,time,location
FROM
(SELECT * FROM table1
UNION ALL  
SELECT * FROM table2) data
GROUP BY name,location
HAVING count(*)!=2

现在,我希望能够比较table1和table2,但现在table2还有另一列称为origin,并且我不确定如何扩展当前逻辑以使其实现。

---Intention: to be able to compare the two tables with varying column numbers
---How to modify this code to do it?

I want to be able to show the differences between the two tables after the query.

有人可以引导我吗?我不想使用联接或减号,我更喜欢使用UNION方式。

解决方法

如果要合并两个不同的表,则必须弥补缺少的列。例如:

SELECT name,date,time,location,origin FROM table2
UNION ALL
SELECT name,null as origin FROM table1
,

我认为问题在于您实际上想忽略多余的列。使用select *的问题在于事情可以改变。

SELECT name,location
FROM (
    SELECT name,location FROM table1
    UNION ALL  
    SELECT name,location FROM table2
) data
GROUP BY name,location
HAVING count(*) != 2

如果您不打算在联合的一半使用select *,则没有任何理由首先使用origin