Можно ли как-нибудь сократить количество 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
, если нет необходимости, у вас тут строгое сравнение с единичкой.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть адаптер в который я загружаю данные с ArrayList нужно проверить если item имеет значение, допустим "красный" - то красим этот item в красный
Мне интересна работа с фрагментами и диалогФрагментамиВот я нашёл проект, но я смотрю его и у меня куча вопросов