2011-12-28 7 views
0

SQL Serverテーブルがあります。今、この表には、複数の列を選択する方法単一のテーブルから同じ行に値を設定する

A, B, C, D, E, F, Gは、今私はだから私は、行A,B,C,D列が同じデータを持っている。この表から行を選択しようとしています。この

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

のように、このテーブルから行を選択したい、主キーIdのような列がありますG列データ> 1322.

どうすればいいですか?ありがとうございました。

私はこのクエリを試みたが、同じ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の

+3

私は理解していない> - A = A、B = B、C = C、D = Dは*常に*真となります。何を手に入れようとしていますか?サンプルデータが参考になります。 – Eric

+0

列Aの値が「A」であることを意味しますか? – Lamak

+0

このテーブルから、A、B、C、D行の同じ列の行を選択しようとしています。 – MonsterMMORPG

答えて

2

をテーブルに参加したいように、私はあなたが何を意味するかTHINKサウンズ重複しています。これがあなたが探しているものかどうか教えてください。

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; 

これは...あなたに、B、C、及びDは、テーブル内の別の行に等しいすべての行を与えるとG 132

+0

はい、重複を探しています。今、あなたの答えを確認するつもりです。 – MonsterMMORPG

+0

こんにちは。私は試みましたが、それらは重複しないすべての行を返します:http://pastebin.com/qzMbkAZ2 – MonsterMMORPG

+0

テーブル内のすべての行に重複がある場合は、すべての行を返します。 –

4

は、あなたが自分自身に

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 
+0

+1 - これは、opが望んでいると思われるでしょう – Lamak

+0

こんにちは。私はこれを試みたが、同じID行を選択した。 t1とt2は同じテーブルです。同じテーブルの異なる行を比較したいからです。 – MonsterMMORPG

+0

@MonsterMMORPG ...もう一度見てください。同じ行を比較していないので、最後のAND句 't1.ID <> t2.ID' –

関連する問題