Страницы

Поиск по вопросам

пятница, 26 апреля 2019 г.

Сократить количество mysql-кода

Можно ли как-нибудь сократить количество 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);

Комментариев нет:

Отправить комментарий