В первом случае это не имеет значения; на самом деле вы можете выбрать 2 или что угодно, потому что это запрос на существование. В общем, выбор константы может использоваться для других целей, помимо запросов на существование (он просто сбрасывает константу в столбец в наборе результатов), но запросы на существование - это то место, где вы, скорее всего, встретите константу.
Например, учитывая таблицу с именем person
, содержащую три столбца: id
, firstname
, lastname
и birthdate
, вы можете написать запрос следующим образом:
select firstname, 'YAY'
from person
where month(birthdate) = 6;
и это вернет что-то вроде
name 'YAY'
---------------
Ani YAY
Sipho YAY
Hiro YAY
Это не полезно, но возможно. Идея состоит в том, что в операторе select вы выбираете выражения , которые могут быть не только именами столбцов, но и константами и вызовами функций. Более вероятный случай:
select lastname||','||firstname, year(birthday)
from person;
Здесь ||
- это оператор конкатенации строк, а year
- это функция, которую я составил.
Причина, по которой вы иногда видите 1
в запросах о существовании, заключается в следующем. Предположим, вы только хотели узнать, был ли человек, чье имя начиналось с буквы «Н», но вам было все равно, кто этот человек. Вы можете сказать
select id
from person
where lastname like 'H%';
но поскольку нам не нужен идентификатор, вы также можете сказать
select 1
from person
where lastname like 'H%';
потому что все, что вас волнует, это то, получаете ли вы непустой набор результатов или нет.
Во втором случае 1 - это номер столбца; это означает, что вы хотите, чтобы ваши результаты сортировались по значению в первом столбце. Если изменить это значение на 2, это упорядочит второй столбец.
Кстати, другое место, где выбираются константы, это когда вы выгружаете из реляционной базы данных в сильно денормализованный CSV-файл, который вы будете обрабатывать в NOSQL-подобных системах.