1

2つのテーブルからいくつかの列を選択する必要があります。

Tab1
| Col1 | Col2 | Col3

Tab2
| Col1 | Col4 | Col5

これは私の質問です:

SELECT A.*,B.Col4 
FROM Tab1 A,Tab2 B 
WHERE A.Col1=B.Col1 
AND A.Col2=='XXX'
AND A.Col3>5;

ただし、このクエリは2つのテーブルを何らかの方法で連結し、いくつかの行を複製します。何が問題なのですか?

期待される結果は次のとおりです。

Tab3
| Col1 | Col2 | Col3 | Col4
4

4 に答える 4

1

=の代わりに使用する必要があり==ます。col1がTab1の主キーで、col2がTab2の主キーであり、Tab1とTab2の関係が1対1の場合、レコードを複製する方法はありません。

SELECT A.*,B.Col4 
FROM Tab1 A,Tab2 B 
WHERE A.Col1=B.Col1 
AND A.Col2 ='XXX'
AND A.Col3>5;
于 2012-09-12T10:03:50.763 に答える
1

投稿したクエリに問題はありませんが、問題がある場合は

いくつかの行を複製します

あなたが説明したように、次に使用しますDISTINCT

SELECT DISTINCT A.*, B.Col4 
FROM Tab1 A, Tab2 B 
WHERE A.Col1 = B.Col1 
AND A.Col2 = 'XXX'
AND A.Col3 > 5;

または他のJOIN構文:

SELECT DISTINCT A.*,B.Col4 
FROM Tab1 A 
INNER JOIN Tab2 B ON A.Col1 = B.Col1 
WHERE A.Col2 ='XXX'
  AND A.Col3 > 5;
于 2012-09-12T10:05:22.460 に答える
1

SQL INNER w3schools

そのウェブ側を使用して、内側、左、右の結合を練習し、理解します。複数のクエリ...。

于 2012-09-12T11:25:12.123 に答える
0

参加を使用する

SELECT A.*,B.Col4 
FROM Tab1 A JOIN Tab2 B ON A.Col1=B.Col1 
WHERE A.Col2='XXX'
AND A.Col3>5;

SQLには、等価性をチェックするための==(二重等号)がなく、代わりに単一(=)を使用することに注意してください。

于 2012-09-12T10:03:06.360 に答える