gpt4 book ai didi

mysql - CASE + IF MysQL查询

转载 作者:行者123 更新时间:2023-11-29 02:07:41 25 4
gpt4 key购买 nike

问题如下。我有一个产品可以属于三个类别之一(由 category_id 定义)。每个类别表都有与产品表中的category_id相关的category_id字段。所以我有3个案例。我正在检查我的 product.category_id 是否在表一中。如果是,我会采取一些值(value)观。如果没有,我会检查剩下的表格。我可以在 ELSE 部分写什么?谁能纠正我的查询?

CASE
WHEN IF EXISTS(SELECT * FROM table1 WHERE category_id='category_id') THEN SELECT type_id FROM table1 WHERE category_id='category_id';
WHEN IF EXISTS(SELECT * FROM table2 WHERE category_id='category_id') THEN SELECT value_id FROM table2 WHERE category_id='category_id';
WHEN IF EXISTS(SELECT * FROM table3 WHERE category_id='category_id') THEN SELECT group_id FROM table3 WHERE category_id='category_id';
ELSE "dont know what here";
END;

最佳答案

else 中,您可以将任何您想要的值作为默认值,例如 null

我认为对结果中的每个产品进行三个左连接而不是多个子查询并使用 coalesce 获取第一个现有值会更有效。示例:

select coalesce(t1.type_id, t2.value_id, t3.group_id)
from product p
left join table1 t1 on t1.category_id = p.category_id
left join table2 t2 on t2.category_id = p.category_id
left join table3 t3 on t3.category_id = p.category_id

关于mysql - CASE + IF MysQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052833/

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