1

当我尝试将值从一个表导入到另一个表时,我没有得到所有结果。示例,请参见下面的代码,我要求:

JOIN transaction ON transaction.invoice = invoicing.invoice

有时,我有 2 或 3 张具有相同发票编号的发票,并且更新仅发生在第一个发票编号上,跳过具有相同发票编号的其他发票。

我需要所有发票,包括副本。

UPDATE invoicing
JOIN transaction ON transaction.invoice = invoicing.invoice
SET invoicing.raison = transaction.transaction, invoicing.description = 
transaction.description, invoicing.voyage_passenger = transaction.voyage_passenger

我错过了什么?

编辑:

表交易:

|num    |date           |invoice    |type   |transaction    |amount   |description  
|886051 |1375381803     |859532     |A      |carte          |7.00     |bla bla desc1
|886052 |1375381809     |859532     |P      |repro          |0.00     |bla bla desc2

表发票 - 比上表多出大约 8 列,下面未注明。同样,我只需要将上面第二行的信息也包含在下表中的新行中。我现在也意识到我应该需要一个 INSERT 而不是 UPDATE 来插入这些重复的行。

|num    |date           |invoice    |type   |raison |amount   |description   |clientID
|951100 |1375381803     |859532     |A      |carte  |7.00     |bla bla desc1 |121212
|951101 |1375401111     |859533     |A      |carte  |7.00     |bla different |222444

谢谢您的帮助。

4

2 回答 2

1

不知道该怎么办ClientId。根据您的示例数据发票可以在不同的日期,所以我不确定不同日期发票的 ClientId 是否相同。

insert into invoicing (`num`, `date`, `invoice`, `type`, 
                       `raison`, `amount`, `description`)
select `num`, `date`, `invoice`, `type`, `transaction`, `amount`, `description`
from Transaction t
where not exists
( select `num` from invoicing i
  where 
       i.`num`=t.`num`
   and i.`date`=t.`date`
   and i.`invoice`=t.`invoice`
   and i.`type`=t.`type` 
   and i.`raison`=t.`transaction` 
   and i.`amount`=t.`amount`  
   and i.`description`=t.`description`  

 )

SQLFiddle 演示

于 2013-08-09T15:13:32.737 回答
0

连接中第一个表中的发票编号可能在第二个表中不存在。为什么不使用 LEFT JOIN?

于 2013-08-09T15:17:43.357 回答