Проверить количество запросов после ограничения использования SQL - PullRequest
3 голосов
/ 10 июля 2020

Я новичок в SQL.

У меня есть запрос типа

select * from mytable order by 1 desc limit 2

Если mytable имеет только 1 строку, этот запрос вернет эту строку. Как я могу убедиться, что мой запрос всегда возвращает 2 результата, и если mytable имеет 1 строку, он вернет NULL

Это мой 1-й вопрос здесь, извините за мой Engli sh

Ответы [ 2 ]

3 голосов
/ 10 июля 2020

Вы можете попробовать использовать уловку объединения здесь:

SELECT col1, col2, col3
FROM
(
    SELECT col1, col2, col3, 1 AS priority FROM mytable
    UNION ALL
    SELECT NULL, NULL, NULL, 2
    UNION ALL
    SELECT NULL, NULL, NULL, 2
) t
ORDER BY
    priority,
    col1
LIMIT 2;

Вышеупомянутая стратегия состоит в том, чтобы включить через объединение две «пустые» записи. Однако эти пустые записи могут появиться в наборе результатов только в том случае, если в вашей таблице меньше двух записей.

1 голос
/ 10 июля 2020

Если у вас есть несколько столбцов и вы не хотите их перечислять, вы можете использовать этот вариант ответа Тима:

select t.*
from mytable t
union all
select t.*
from (select 1 as n union all select 2 as n) left join
     mytable t
     on 1 = 0;  -- always false
order by col1 desc
limit 2;

При сортировке по убыванию сначала помещаются значения, отличные от NULL. Предполагается, что col1 не NULL, поэтому действительные строки идут первыми.

Примечания:

  • Это упрощает добавление дополнительных строк (просто измените подзапрос) .
  • Это упрощает обработку большего количества столбцов - они вставляются автоматически.
  • Подзапрос не требуется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...