SQL-запрос для поиска строк, в которых значение одного столбца соответствует другому столбцу в другой строке - PullRequest
2 голосов
/ 20 марта 2012

У меня есть таблица базы данных со столбцом, называемым «символ», который уникален по некластеризованному индексу. Теперь нам нужно изменить данные в столбце «символ», используя данные из другого столбца в той же таблице, например, column2.

Попытка сделать обновление, например

update table
set symbol = column2
where column2 <> '' and
deleted = 0

приводит к ошибке «Невозможно вставить повторяющуюся строку ключа в объекте», поэтому в таблице должна существовать 1 или более строк, которые уже имеют значение в столбце символа, равное значению в столбце 2, или некоторые строки, которые имеют повторяющееся значение столбца 2.

Я могу найти строки с дубликатами в column2, но я изо всех сил пытаюсь найти запрос, чтобы найти те строки, которые имеют значение в символьном столбце, который существует в любой строке в column2. У кого-нибудь есть идеи?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 марта 2012
select t1.symbol, count(0) as rows
from table t1
join table t2 on t2.column2 = t1.symbol
group by t1.symbol
0 голосов
/ 20 марта 2012

Тестовые данные:

symbol      column2
----------- -----------
1           1
2           1
3           3
4           5

найти те строки, которые имеют значение в столбце символов, которое существует в любой строке в столбце 2.

select symbol, column2
from table 
where symbol in (select column2
                 from table)

Результат:

symbol      column2
----------- -----------
1           1
3           3

Или, возможно, это зависит от того, какой результат вы хотите.

select symbol, column2
from table as T1
where exists (select *
              from table as T2
              where T1.symbol = T2.column2 and
                    T1.symbol <> T2.symbol)

Результат:

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