SELECT `acart`.`order_number` AS `admin_order_number`,
`acart`.`user_id` AS `admin_user_id`,
`acart`.`created_by` AS `admin_created_by`,
`rcart`.`order_number` AS `renew_order_number`,
`rcart`.`user_id` AS `renew_user_id`,
`rcart`.`created_by` AS `renew_created_by`,
`scart`.`order_number` AS `shopping_order_number`,
`scart`.`user_id` AS `shopping_user_id`,
`scart`.`created_by` AS `shopping_created_by`
FROM `cdp_order_transaction_master` AS `master`
LEFT JOIN `cdp_admin_shopping_cart` AS `acart`
ON `acart`.`order_number`=`master`.`order_number`
LEFT JOIN `cdp_renew_cart` AS `rcart`
ON `rcart`.`order_number`=`master`.`order_number`
LEFT JOIN `cdp_shopping_cart` AS `scart`
ON `scart`.`order_number`=`master`.`order_number`
WHERE master.order_number IS NULL
让我解释一下我的问题,如果订单成功,那么它将转到cdp_order_transaction_master表和任何其他3个表(cdp_admin_shopping_cart,cdp_renew_cart,cdp_shopping_cart),具体取决于具体情况,但如果订单失败,那么它将不会转到cdp_order_transaction_master表并保留在其他表格中 所以我想要cdp_order_transaction_master中不存在的失败订单,并且可以出现在任何其他表中(cdp_admin_shopping_cart,cdp_renew_cart,cdp_shopping_c art)
答案 0 :(得分:2)
WHERE master.order_number IS NULL
这是您的主表,所有其他表的连接条件都在此列上。
您正尝试将null加入null
根据您的评论,尝试:
select 'cdp_admin_shopping_cart' as `err_table`, a1.order_number
from cdp_admin_shopping_cart a1
where not exists (select 1 from cdp_order_transaction_master a2 where a2.order_number = a1.order_number)
union all
select 'cdp_renew_cart' as `err_table`, a1.order_number
from cdp_renew_cart a1
where not exists (select 1 from cdp_order_transaction_master a2 where a2.order_number = a1.order_number)
union all
select 'cdp_shopping_cart' as `err_table`, a1.order_number
from cdp_shopping_cart a1
where not exists (select 1 from cdp_order_transaction_master a2 where a2.order_number = a1.order_number)