Можно ли как-нибудь сократить количество mysql-кода в следующем запросе?
SELECT IF(EXISTS(SELECT * FROM tbl WHERE `field_1` LIKE '1'),
(SELECT field_3 FROM tbl WHERE `field_1` LIKE '1'),
(SELECT field_3 FROM tbl WHERE `field_2` LIKE '1'));
Если столбцы field_1 и field_2 не уникальны, то подзапросы, в приведенном вами примере, могут вернуть несколько значений. Сам запрос можно сократить до одной выборки из таблицы, что сократит число обращений к таблице:
SELECT field_3
FROM tbl
WHERE `field_1` = 1 OR (`field_1` != 1 and `field_2` = 1)
ORDER BY `field_1`
LIMIT 1;
Если field_1 и field_2 уникальны, то сортировка и ограничение числа записей не нужно:
SELECT field_3
FROM tbl
WHERE `field_1` = 1 OR (`field_1` != 1 and `field_2` = 1);
Судя по всему, у вас во from другие таблицы, поэтому вы решили использовать подзапросы в select. Можно сделать так при условии, что SELECT field_3 FROM tbl WHERE field_1 LIKE '1' возвращает строго 1 строку всегда:
SELECT IFNULL((SELECT field_3 FROM tbl WHERE `field_1` = '1'),
(SELECT field_3 FROM tbl WHERE `field_2` = '1'));
Не стоит делать like, если нет необходимости, у вас тут строгое сравнение с единичкой.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости