Как выбрать несколько столбцов значений одинаковых строк из одной таблицы - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть таблица SQL Server. Теперь в этой таблице есть столбцы, такие как первичный ключ Id, A, B, C, D, E, F, G

Теперь я хочу выбрать строки из этой таблицы следующим образом

A=A, B=B, C=C, D=D and G > 132

Итак, я пытаюсь выбрать строки из этой таблицы, у которых строки A,B,C,D имеют одинаковые данные и данные столбца G> 132.

Так как я могу это сделать? Спасибо.

Я пробовал этот запрос, но возвращал те же строки Id

    SELECT TableA.Id,TableA.UserId,TableA.MaximumHp,TableA.Attack,TableA.Defense,TableA.SpAttack,TableA.SpDefense,TableA.Speed
FROM myTable as TableA
Inner Join myTable as TableB on 
TableA.MaximumHp = TableB.MaximumHp
  AND TableA.Attack = TableB.Attack
  AND TableA.Defense = TableB.Defense
    AND TableA.SpAttack = TableB.SpAttack
      AND TableA.SpDefense = TableB.SpDefense
        AND TableA.Speed = TableB.Speed
       AND TableA.Id != TableB.Id

SQL Server 2008 R2

Ответы [ 2 ]

4 голосов
/ 29 декабря 2011

Звучит так, будто ты хочешь присоединиться к столу к себе

SELECT *
FROM Table t1
Inner Join Table t2 on t1.A = t2.A
  AND t1.B = t2.B
  AND t1.C = t2.C
  AND t1.D = t2.D
  AND t1.G > 132
  AND t1.ID <> t2.ID
2 голосов
/ 29 декабря 2011

Я думаю, что вы имеете в виду дубликаты. Скажи мне, если это то, что ты ищешь.

SELECT [Table].A, [Table].B, [Table].C, [Table].D, [Table].E, [Table].F, [Table].G
FROM [Table] LEFT JOIN (SELECT A, B, C, D FROM [Table] 
GROUP BY A, B, C, D
HAVING count(*) > 1)
AS sub ON ([Table].A=sub.A) AND ([Table].B=sub.B) AND ([Table].C=sub.C) AND ([Table].D=sub.D)
WHERE G>132 and sub.A is not null;

Это даст вам все строки, где a, b, c и D равны другой строке в таблице ... и G> 132

...