@titronfan

MySQL: как сделать выборку из таблицы одним запросом с условием по полям?

Здравствуйте!
Есть одна простая, но тяжеловесная таблица (~30gb) с полями: user_name, title, desc.
Есть массив из 5-ти id, которые нужно выбрать (но с условием). Пример массива: array(1,2,3,4,5);

Что нужно сделать: сделать выборку первых 2-х id (1,2) в начале по 3-м полям - это user_name, title и desc.
А остальные 3 id (3,4,5) - сделать выборку по 2-м полям (user_name, title).

Можно конечно сделать выборку сразу всех полей и 5-ти id-шников, поле desc очень тяжелое в плане данных и не хочется лишний раз грузить MySQL (на дополнительное чтение данных).

В общем, сейчас у меня 2 запроса к БД:
SELECT user_name, title, desc FROM my_table WHERE id IN (1,2)

SELECT user_name, title FROM my_table WHERE id IN (3,4,5)


Вопрос в том, как это сделать одним запросом? Это возможно или нет?
Я не силен в SQL запросах. Прошу совета.
  • Вопрос задан
  • 884 просмотра
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `user_name`, `title`, `desc` FROM `my_table` WHERE `id` IN (1,2)
    UNION SELECT `user_name`, `title`, '' AS `desc` FROM `my_table` WHERE `id` IN (3,4,5)
Ответ написан
SELECT 
user_name, 
title, 
CASE WHEN id IN (1,2) THEN desc ELSE null END AS desc
FROM my_table WHERE id IN (1,2,3,4,5);
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
SELECT `user_name`, `title`, `desc` FROM my_table WHERE id IN (1,2,3)
UNION ALL
SELECT `user_name`, `title`, null FROM my_table WHERE id IN (4,5)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы