查询返回0条记录时更改MySQL比较值

时间:2016-07-06 14:22:36

标签: php mysql comparison

当没有返回记录时,我无法选择记录。 我要做的是根据语言选择记录。在这种情况下,语言的“language_id”编号为3.所以问题是此查询返回0条记录。如果是这种情况,我想将language_id更改为1,在这种情况下,女巫是默认语言。

如果尝试使用exists,但我无法创建新选择。任何人都可以帮我一点,甚至可以更改比较部分中的查询值吗?

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')

2 个答案:

答案 0 :(得分:1)

您可以在子查询中使用相同的查询来根据计数获取计数和切换语言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

答案 1 :(得分:0)

使用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;