Не выбирайте строку, если столбец не отличается - PullRequest
0 голосов
/ 05 октября 2018

У меня есть таблица phone_numbers
. Имеются примеры данных:

phone_number, id  
09123456789, 1234  
09876543210, 1234  
09012463579, 5678  

. Я хочу получить вывод:после предложения where?
select distinct также не работает

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Я считаю, что это самое простое правильное решение:

  SELECT MAX (phone_number) as phone_number, id
    FROM phone_numbers
GROUP BY id
  HAVING COUNT (*) = 1

С данными испытаний:

WITH phone_numbers AS
(
SELECT '09123456789' AS phone_number , 1234 AS ID FROM dual
UNION ALL
SELECT '09876543210' AS phone_number , 1234 AS ID FROM dual
UNION ALL
SELECT '09012463579' AS phone_number , 5678 AS ID FROM dual
)
  SELECT MAX (phone_number) as phone_number, id
    FROM phone_numbers
GROUP BY id
  HAVING COUNT (*) = 1

phone_number |  id   | 
----------------------
09012463579  |  5678 |

Надеюсь, я помог!

0 голосов
/ 05 октября 2018
    select f.phone_number
          ,f.id
    from ( select t.phone_number
                 ,t.id
                 ,count(*) over( partition by t.id ) as dpl
           from table t ) f
    where f.dpl = 1
0 голосов
/ 05 октября 2018

Кажется, вам нужны условные count

select * from phone_numbers 
where id in (
    select id from
    phone_numbers
    group by id
    having count(*)=1
              )

или использование существует

select * from phone_numbers t1
  where exists ( select 1 from phone_numbers t2
                  where t1.id=t2.id
                  group by t2.id
                  having count(*)=1
                 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...