表の中だけでなく、もっと多くの列があることを願っていますname
! テーブルを結合する必要があるため、同じ値を共有する列が必要になります。このようなもの:
table1
------
PK Name
-- ----------------
1 Frank Wisely
2 Albert Smith
3 Tony Gonzalez
4 Peter Nicholas
5 Andrew Wonder
6 Adams Tony
table2
------
PK Name
-- ----------------
2 Smith
5 Wonder
6 Tony
それらに参加する方法は次のとおりです。
select
a.*
FROM Table2 b
inner join Table1 a ON a.pk=b.pk
結合する PK タイプの列がない場合は、部分文字列で結合を試みることができますが、誤った一致のために結果にエラーが発生する可能性が高くなります。サンプル データに 6 行ある場合はすべて問題ないように見えますが、ジョン スミス、ビル スミス、マイク スミス、ジョン ブラウン、マイク ブラウンの場合はどうなるでしょうか。どうやってジョンを見つけるの?LIKE を使用してテーブルに参加できますが、これを行うのは奇妙に思えます。
このクエリは、あなたが求めていることを行います:
select
a.*
FROM Table2 b
inner join Table1 a ON a.Name like '%'+b.Name+'%'
作業例:
create table Table1 (name varchar(100), junk varchar(5))
insert into Table1 values ('Frank Wisely','aaa')
insert into Table1 values ('Albert Smith','bbb')
insert into Table1 values ('Tony Gonzalez','ccc')
insert into Table1 values ('Peter Nicholas','ddd')
insert into Table1 values ('Andrew Wonder','eee')
insert into Table1 values ('Adams Tony','fff')
Create table Table2 (name varchar(100))
insert into Table2 VALUES ('Tony')
insert into Table2 VALUES ('Smith')
insert into Table2 VALUES ('Wonder')
select
a.*
FROM Table2 b
inner join Table1 a ON a.Name like '%'+b.Name+'%'
出力:
name junk
---------------- -----
Albert Smith bbb
Tony Gonzalez ccc
Andrew Wonder eee
Adams Tony fff
(4 row(s) affected)