1

嗨我有两个表结构是这样的

表格1

 Customer   Company   price    qty     item        invno
   1          a        89       8      item1        23 
   2          b        80       4      item2        22
   3          c        90       3      item1        45
   4          d        19       6      item3        12

表 2

 Customer   Company   price    qty     item       invno
   1          a        89       8      item1        23
   2          b        80       4      item2        18
   3          c        90       3      item1        45
   4          d        19       6      item3        15

基本上 table1 包含当前记录和 table2 当前+过去记录,它们都有其他列

我想要的是从 table1 和 table2 中获取所有记录,但是如果 invno 重复,我需要 table1 中的记录,在这种情况下结果集将包含 invno-23(table1),22(table1),45(table1 ),12(表1),18(表2),15(表2)

我尝试使用 UNION 但它在不同的列选择上给出了不同的结果我卡在这里任何帮助都会很棒。

4

2 回答 2

0
SELECT t2.Customer,
  t2.Company,
  t2.price,
  t2.qty,
  t2.item,
  IFNULL(t1.invno,t2.invno)
FROM table2      AS t2
LEFT JOIN table1 AS t1
ON t2.Customer=t1.Customer
于 2013-12-05T15:48:27.370 回答
0

这是一种方法,使用union all和过滤器:

select *
from table1 t1
union all
select *
from table2 t2
where not exists (select *
                  from table1 t1
                  where t1.invno = t2.invno
                 );
于 2013-12-05T15:48:31.657 回答