2

SQLには、2つのテーブルを「結合」する演算子があります。インタビューで、あるテーブルには1、2、7、8が含まれるフィールドが1つだけあり、別のテーブルにも2、7が含まれるフィールドが1つしかない場合、交差点を取得するにはどうすればよいかと言われました。そのように見たことがなかったので、最初はびっくりしました。

後で、それが実際には「参加」(内部参加)であることがわかりました。

select * from t1, t2 where t1.number = t2.number

(「結合」という名前は、「交差する」というよりも「結合する」のように感じますが)

別の解決策は

select * from t1 INTERSECT select * from t2

ただし、MySQLではサポートされていません。これらの2つの方法以外に、交差点を取得するさまざまな方法はありますか?

4

2 に答える 2

2

このページでは、MySQLにINTERSECTとMINUSを実装する方法について説明します。INTERSECTを実装するには、内部結合を使用する必要があります。

SELECT t1.number
FROM t1
INNER JOIN t2
ON t1.number = t2.number

あなたのコードもこれを行いますが、そのような結合をこれ以上書くことはお勧めできません。

于 2010-04-24T21:03:07.587 に答える
0

交差は単なる内部結合です。それで

select * from t1 INTERSECT select * from t2

MySQL用に次のように書き直すことができます

select * 
from t1 
inner join t2
on t1.col1 = t2.col1
and t1.col2 = t2.col2
and t1.col3 = t2.col3
...
于 2010-04-24T21:04:27.890 に答える