gpt4 book ai didi

Mysql 检查数据是否存在,否则查询另一张表

转载 作者:行者123 更新时间:2023-11-29 10:46:34 25 4
gpt4 key购买 nike

我试图在这里避免两个查询..所以我想做的是首先,检查该表上是否存在数据..如果存在,然后从该表中获取数据..否则,查询到另一个表..我的脚本看起来像这样

select if( exists(
select 1
from emoney_promo.promo_participants pp
left join emoney_promo.promo_dtl_child pdc on pdc.active_promo_id = pp.id
where pp.applied_to = '4518'
),
(
select pdc.*
from emoney_promo.promo_participants pp
left join emoney_promo.promo_dtl_child pdc on pdc.active_promo_id = pp.id
where pp.applied_to = '4518'
),
(
select pp.id as pp_id, pv.id as pv_id, pv.validation_type as pv_validationtype, pv.validation_value as pv_validationvalue,
pc.id as pc_id, pc.tanggal as pc_tanggal, pc.counter as pc_counter, pc.member_id as pc_memberid, pc.mid as pc_mid,
pd.min_amount_trx as pd_minamounttrx, pd.max_amount_trx as pd_maxamounttrx, pd.cashback_type as pd_cashbacktype
from emoney_promo.promo_validation pv
join emoney_promo.promo_counter pc on pv.promo_id = pc.promo_id
join emoney_promo.promo_dtl pd on pd.promo_id = pv.promo_id
join emoney_promo.promo_participants pp on pp.promo_id = pv.promo_id
where pc.member_id = '0867667762'
and pp.applied_to = '4518'
and pc.mid = '4518'
));

但它显示错误代码:1241。操作数应包含 1 列有什么办法可以实现这一点吗?再一次,我试图避免 2 个查询,这就是我使用这个的原因:)

最佳答案

如上所述:当您的第一个查询不返回任何记录时,第二个查询也不会返回任何记录(因为您应用相同的条件)。因此,您只需执行第一个查询即可,要么得到结果,要么得不到结果。

无论如何,编写您所描述的此类查询的典型方法是:

select a, b, c from ... -- <== first query
union all
select d, e, f from ... -- <== second query
where not exists (<first query again>)

关于性能:是的,您只需向 DBMS 发送一个查询即可节省时间。然而,组合查询比单独查询更复杂。这可能需要更长的时间来执行。因此,我通常会进行两个单独的查询,但有时进行这样的组合查询可能是有意义的(特别是当第一个查询几乎总是不返回任何行时)。

关于Mysql 检查数据是否存在,否则查询另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450627/

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