SELECT `id`, `name` FROM `pms_assess` WHERE `parent_id` = ( SELECT catalog_id FROM `pms_product` WHERE `id` = 1663780757367164929 );如果count结果等于0的话则返回SELECT `id`, `name` FROM `pms_assess` WHERE `parent_id` = 0;,用CASE WHEN THEN实现
时间: 2023-07-13 18:21:39 浏览: 90
好的,你的问题是如何用CASE WHEN THEN实现根据count结果判断返回不同的SQL语句。我理解的是,你想根据第一个SQL语句的count结果来判断是否需要执行第二个SQL语句,如果count结果为0,则执行第二个SQL语句。可以使用以下SQL语句实现:
```
SELECT
CASE
WHEN COUNT(*) = 0 THEN (SELECT `id`, `name` FROM `pms_assess` WHERE `parent_id` = 0)
ELSE (SELECT `id`, `name` FROM `pms_assess` WHERE `parent_id` = (SELECT catalog_id FROM `pms_product` WHERE `id` = 1663780757367164929))
END
FROM `pms_assess`
WHERE `parent_id` = (SELECT catalog_id FROM `pms_product` WHERE `id` = 1663780757367164929);
```
这个SQL语句会先执行第一个SELECT语句,根据条件查询pms_assess表中符合条件的行数。根据count结果,使用CASE WHEN THEN判断是否需要执行第二个SELECT语句。如果count结果为0,则执行第二个SELECT语句,否则执行第三个SELECT语句。其中第二个SELECT语句查询parent_id为0的行,第三个SELECT语句查询parent_id为catalog_id的行。注意,这里使用了子查询,需要保证子查询返回的结果只有一行。
希望这个回答能够解决你的问题。
阅读全文