2

私は2つのテーブルを持っています

表1:ColumnA(varchar)

表2:ColumnB(varchar)

ColumnBが「ColumnA%」の行のいずれかに「類似」しているT2からすべての行を取得する必要があります。たとえば、T1の行は次のようになります。

  • Summer09
  • Fall09

T2の行は

  • Spring09 Com101 Sec1
  • Summer09 Stat400 Sec2
  • Fall09 CS200 Sec3

そのシナリオでは、Stat400とCS200の行を再調整します。単一のSQLステートメントでこれを行う方法はありますか?

4

2 に答える 2

4

SELECT T2.*
FROM T1, T2
WHERE T1.ColumnB LIKE T2.ColumnA + '%'

また


SELECT T2.*
FROM T1
INNER JOIN T2 ON T1.ColumnB LIKE T2.ColumnA + '%'

おそらくあまり速く走らないでしょう。

于 2009-07-15T20:02:04.087 に答える
2

この質問は、テーブルのデザインが悪いことを示しています。 私の親友のコッドはいつも言っていました:複数の情報を1つの列にまとめないでください!

t1 coulmは分割する必要があるため、学期および/または年は、t2テーブルへのFKを含む独自の列である必要があります。この列では、インデックスを使用してクラス情報を見つけることができ、遅いLIKEはありません。

于 2009-07-15T20:19:44.283 に答える