Я пытался использовать сложные условия в коррелированном подзапросе, но он не дал ожидаемого результата.Можете ли вы взглянуть на приведенный ниже пример, чтобы понять, почему первый запрос не работает, а второй работает?
Создать таблицу и заполнить строки:
CREATE TABLE TestCase
(
Seq INT IDENTITY PRIMARY KEY,
ID INT,
Name VARCHAR(50)
)
INSERT INTO TestCase
VALUES
(100, 'MJ'),
(110, 'MJ'),
(120, 'AK'),
(130, 'AK')
Первый запрос:
SELECT A.ID, A.Name FROM TestCase AS A
WHERE A.ID IN (SELECT ID FROM TestCase WHERE ID <> A.ID AND Name = A.Name)
(затронуто 0 строк)
Второй запрос с EXISTS:
SELECT A.ID, A.Name FROM TestCase AS A
WHERE EXISTS (SELECT ID FROM TestCase WHERE ID <> A.ID AND Name = A.Name)
(затронуто 4 строк)
Предположительно, оба запроса должны возвращать все четыре строки, но первый запрос не дал;Я не уверен, почему только второй запрос вернул четыре строки.Может кто-нибудь помочь?Спасибо.