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