gpt4 book ai didi

mysql - 具有重复值的 JOIN 上的更新表仅返回第一个值

转载 作者:行者123 更新时间:2023-11-29 00:27:49 25 4
gpt4 key购买 nike

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

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

Table Invoicing - 比上表多了大约 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

感谢您的帮助。

最佳答案

不知道如何处理 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 demo

关于mysql - 具有重复值的 JOIN 上的更新表仅返回第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18148605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com