Mysql比较两个表中的两列

Posted

技术标签:

【中文标题】Mysql比较两个表中的两列【英文标题】:Mysql compare two columns in two tables 【发布时间】:2013-03-03 03:03:47 【问题描述】:

我有 2 个表,即 Products & Purchase:

products: id, productname, quantityleft.

purchase:id, productname, quantity. 

产品表- 将购买所有新产品。这意味着表产品中不会存在相同的产品名称。所有独特产品的列表

PURCHASE TABLE - 具有唯一 Purchase_ID 的所有购买产品的列表。

这是我的场景/问题:

如果我想在 PURCHASE 中添加或插入值,PRODUCTS 表将获得 purchase 的所有值,但是仅当 purchase 中的 productname 不存在于 PRODUCTS 的 'productname' 中。

如果 productname purchase 已存在于 productname products 中,则 quantity products 中的 将由 purchase 中具有相同 productnamequantity 的值相加。

到目前为止,我之前还没有遇到过这种情况,但如果我得到了这种情况,我可能很容易编写这个代码。我现在想的是使用distinct,但我知道这不是正确的做法。你能建议我实现这一目标的最佳和正确方法吗?除了我真的一无所知,我不能用谷歌搜索它。希望你能帮助我。

【问题讨论】:

这称为“UPSERT”。如果您在产品表上有一个主键,这是一个类似的问题,它有一个很好的答案:***.com/questions/1218905/… upsert 也适用于两个表? 【参考方案1】:

好吧,我会按照以下方式做 改变场景,

products: id, productname.  
purchase: id, productname, quantity, prd_id.

购买的物品;检查产品中是否存在名称 如果不存在 - 分配新的产品 ID - 插入到 productspurchase 表中。 否则,如果现有商品已购买(检查产品 ID) - 产品表中没有任何内容 - 更新 quantity+currentQtypurchase where prd_id = products.id

【讨论】:

以上是关于Mysql比较两个表中的两列的主要内容,如果未能解决你的问题,请参考以下文章

如何比较mySql中的两列其中之一是Json

Excel宏比较两个工作表中的两列并插入行值

显示来自两个不同表的两列之间的差异(比较表)

比较数据透视表中计算字段中的两列错误

在 Oracle 存储过程中比较 IF 语句中的两列

想比较laravel中不同表的两列