-8

行内の 2 つの列のすべての値が別の roe の他の 2 つの値と一致するテーブルからすべての行を取得したいです。 ???

4

2 に答える 2

2

シンプルなGROUP BYものがあなたのために働くはずです:

SELECT Col1,Col2
FROM YourTable T
GROUP BY Col1,Col2
HAVING COUNT(*) > 1

これからやってみたことを投稿してください...

- 編集 -

同じ緯度/経度を持つすべての行を返す場合は、次のようになります。

SELECT *
FROM YourTable
WHERE (lat,lon) IN (
      SELECT lat,lon
      FROM YourTable
      GROUP BY lat,lon
      HAVING COUNT(*) > 1
)

http://sqlfiddle.com/#!2/f9658/5

于 2013-02-21T18:34:22.060 に答える
1

where 句には複数の条件を含めることができます。

SELECT * FROM tbl1 
WHERE tbl1.lat = tbl2.lat AND tbl1.long = tbl2.long

あなたが求めているのと同じテーブルで、次のような自己結合を試すことができます:

SELECT t1.ID, t2.ID from myTable as t1
INNER JOIN myTable as t2
WHERE t1.lat = t2.lat and t1.long = t2.long

または、グループを使用して、サブ選択または返された緯度/経度に対する 2 番目のクエリで実際のレコードを取得できる数を確認します。

SELECT t.lat, t.lng, count(*) from myTable as t
GROUP BY (t.lat, t.long)
HAVING Count(*) >=2

次のようなサブ選択を使用します(デバッグが必要な場合があります):

SELECT * from myTable as t1, 
(SELECT t.lat, t.lng from myTable as t
GROUP BY (t.lat, t.long)
HAVING Count(*) >=2) as t2
WHERE t2.lat = t1.lat and t2.long = t1.long

緯度/経度が同一のレコードが多数存在する可能性がある場合は、グループを使用して 2 つ以上の一致の条件で緯度/経度を引き戻し、テーブルを再度反復処理して、コード内の各ペアに一致するすべてのレコードを取得することをお勧めします。 .

于 2013-02-21T18:31:02.883 に答える