Проверьте, все ли строки одинаковы - PullRequest
0 голосов
/ 10 января 2019

У меня есть запрос на выборку, который возвращает несколько строк, и я хочу проверить, все ли строки одинаковы. Так что-то вроде этого:

anything_other_than(123) in (select id from foo)

Итак, если select id from foo возвращает 111,222,123,333, приведенное выше утверждение ложно, а если select id from foo возвращает 123,123,123, то это правда. Как мне этого добиться?

Ответы [ 4 ]

0 голосов
/ 10 января 2019

Другой вариант - использовать EXISTS с условием where:

select not exists (select *
                   from the_table
                   where id <> 123);
0 голосов
/ 10 января 2019

Запустите это:

select count(distinct id) = 1 and count(*) > 1 from foo;

count(distinct id) вернет 1, если все строки одинаковы
и count(*) вернет общее количество строк.
Если это возвращает true, то у вас более 1 строки, и все строки одинаковы.

0 голосов
/ 10 января 2019

Вы можете использовать что-то вроде этого -

select x, IF(x > 1, "FALSE", "TRUE") from 
(SELECT count(distinct(A.id)) as x FROM foo as A) as B;

См. Это https://www.w3schools.com/sql/func_mysql_if.asp

0 голосов
/ 10 января 2019

Простым решением является использование оператора = ALL:

SELECT 123 = ALL (SELECT id FROM foo);

Это решение также прекращает сканирование результата, как только найдено первое несоответствующее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...