gpt4 book ai didi

Mysql 查询 Left Join with Not in

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:41 25 4
gpt4 key购买 nike

对于给定的 loanID,如果 loanID 已经存在于 table1 中,但不存在于 table2 中,我想选择属于该 loanID 的所有项目名称,否则如果该 loanID 存在于两个表(table1 和 table2)中并且 balanceDue>0 在这种情况下还需要选择属于该 loanid 的项目名称。

表 1:

loanID, itemId, itemName, itemQty, balanceQty

表 2:

loanID, itemId, GRN, itemName, balanceDue, qty

示例数据

案例一

表一

loanID  itemId     itemName    
LN1 IT1 Item001
LN1 IT2 Item002
LN1 IT3 Item003
LN2 IT1 Item001
LN2 IT2 Item002
LN2 IT3 Item003
LN3 IT1 Item001
LN3 IT2 Item002
LN3 IT3 Item003

表2

loanID  itemId  itemName  balanceDue
LN1 IT1 Item001 0
LN1 IT2 Item002 0
LN1 IT3 Item003 0
LN2 IT1 Item001 0
LN2 IT2 Item002 0
LN2 IT3 Item003 1000

如果我选择 LN3 作为 LoanID,因为 LN3 不在表 2 中,我需要获取所有属于 LN3 的项目名称LN3 的结果必须是

item001, item002, item003

案例二

如果我选择 LN3 作为表 2 上存在的 LoanID,如果任何项目的 balanceDue>0 属于 LN3这些项目名称必须是生产的。

LN3 的结果必须是

item001, item003

如果我选择 LN2 作为 loanID,LN2 的结果必须是

item001

表一

loanID  itemId  itemName    
LN1 IT1 Item001
LN1 IT2 Item002
LN1 IT3 Item003
LN2 IT1 Item001
LN2 IT2 Item002
LN2 IT3 Item003
LN3 IT1 Item001
LN3 IT2 Item002
LN3 IT3 Item003

表2

loanID  itemId  itemName    balanceDue
LN1 IT1 Item001 0
LN1 IT2 Item002 0
LN1 IT3 Item003 0
LN2 IT1 Item001 300
LN2 IT2 Item002 0
LN2 IT3 Item003 1000
LN3 IT1 Item001 500
LN3 IT2 Item002 0
LN3 IT3 Item003 0

最佳答案

尝试

SELECT
table1.loanID,
GROUP_CONCAT( COALESCE( table2.itemName,table1.itemName ) )
FROM
table1
LEFT JOIN table2 ON table1.loanID = table2.loanID
WHERE
table2.loanID IS NULL OR balanceDue>0
GROUP BY
table1.loanID

关于Mysql 查询 Left Join with Not in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067390/

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