查询returns0条记录时更改MySQL比较值

Change MySQL comparison value when query returns 0 records

当没有返回记录时,我在 select 处理记录时遇到了问题。 我想做的是 select 基于语言的记录。在这种情况下,语言有 "language_id" 数字 3。所以问题是这个查询 returns 0 条记录。如果是这种情况,我想将 language_id 更改为 1 在这种情况下是默认语言。

如果尝试使用 exists 进行操作,但我无法创建新的 selection。谁能帮我一下,是否可以更改比较部分中的查询值?

SELECT `sepc`.`value` FROM (`items_2_extra_properties_columns` AS sepc)
WHERE `sepc`.`item_id` = '58489' 
AND `sepc`.`property_id` = '10799' 
AND `sepc`.`lang_id` = '3')

使用 if 语句,如果第一个结果为 null 它将执行第二个

SELECT IFNULL( (SELECT `sepc`.`value` FROM (`items_2_extra_properties_columns` AS sepc)
WHERE `sepc`.`item_id` = '58489' 
AND `sepc`.`property_id` = '10799' 
AND `sepc`.`lang_id` = '3'),
(SELECT `sepc`.`value` FROM (`items_2_extra_properties_columns` AS sepc)
WHERE `sepc`.`item_id` = '58489' 
AND `sepc`.`property_id` = '10799' 
AND `sepc`.`lang_id` = '1')) AS value;

您可以在子查询中使用相同的查询来获取计数并根据计数切换语言 ID,如下所示:

SELECT `sepc`.`value` FROM (`items_2_extra_properties_columns` AS sepc)
WHERE `sepc`.`item_id` = '58489' 
AND `sepc`.`property_id` = '10799' 
AND CASE WHEN 
(SELECT COUNT(`sepc`.`value`) FROM  (`items_2_extra_properties_columns` AS sepc) WHERE `sepc`.`item_id` = '58489' AND `sepc`.`property_id` = '10799' AND `sepc`.`lang_id` = '3')=0
THEN `sepc`.`lang_id` = '1' ELSE `sepc`.`lang_id` = '3'
END