SQL-выражение для проверки, являются ли значения в столбце одинаковыми

Я хочу проверить, что все значения в столбце c1 определенной таблицы, скажем, t1, одинаковы. Я делаю это с:

SELECT count(*)=1 
  FROM (
        SELECT c1 
          FROM t1 
      GROUP BY c1) AS t1_grouped;

это "правильная вещь", или есть какая-то агрегатная функция или какая-то другая языковая конструкция для достижения того же самого (возможно, даже с лучшей производительностью)?

3 ответа

Решение

Ну, основываясь на ответе@Bohemian, похоже, я могу улучшить свой запрос следующим образом:

SELECT count(DISTINCT c1)=1 FROM t1;

Намного лучше!

Это скажет вам, сколько разных значений у вас есть:

select count(distinct c1) from t1

Если это число 1тогда они все одинаковые.

Бессмысленно (по крайней мере, для меня) заполнять столбец таблицы тем же значением (если я правильно понял, что вы имеете в виду). Если вам нужно проверить значение, чтобы быть в диапазоне или подчиниться некоторым (бизнес) правилам, используйте триггер. Триггеры изобретены именно для этой цели.

Другие вопросы по тегам