查询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
当没有返回记录时,我在 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