jap*_*pem 14 sql join sql-like
使用Sequel Pro,我有这两个表:
Table1
Name Year x y
John Smith 2010 10 12
Adam Jones 2010 8 13
John Smith 2011 7 15
Adam Jones 2011 9 14
etc.
Run Code Online (Sandbox Code Playgroud)
和
Table2
Name Year z
Smith John Smith John 2010 27
Jones Adam Jones Adam 2010 25
Smith John Smith John 2011 29
Jones Adam Jones Adam 2011 21
etc.
Run Code Online (Sandbox Code Playgroud)
基本上,表2中的名称仅与姓氏和名字切换相同,然后重复一次.因此表1中的名称在表2的名称中找到("John Smith"在"Smith John Smith John"中找到).我想执行内部联接并将Table2的z值连接到Table1的其他值并得到如下内容:
Name x y z
John Smith 10 12 27
Adam Jones 8 13 25
Run Code Online (Sandbox Code Playgroud)
为此,我运行了这个查询:
Select Table1.*, Table2.z
From Table1
Inner join Table2
On Table1.Name like "%Table2.Name%" and Table1.Year=Table2.Year
Run Code Online (Sandbox Code Playgroud)
但我把它作为输出:
Name Year x y z
Run Code Online (Sandbox Code Playgroud)
就是这样.我得到了标题,但没有排.我不知道我做错了什么......我怀疑它可能与我使用类似操作符的方式有关,但我不知道.任何帮助将非常感激.
Joa*_*son 34
除了一些奇怪的数据模型,你已经在LIKE部分中转换了表格(table1.name应该是table2.name的一部分,而不是相反),你需要将百分比添加到值,不是字段的名称,这意味着不引用名称;
SELECT table1.*, table2.z
FROM table1
INNER JOIN table2
ON table2.name LIKE CONCAT('%', table1.name, '%')
AND table1.year = table2.year
Run Code Online (Sandbox Code Playgroud)
您的查询不正确,您说该列的内容应该是这样的abcdTable2.Nameefgh.这是正确的:
Select Table1.*, Table2.z
From Table1
Inner join Table2
On Table1.Name like "%" + Table2.Name+ "%" and Table1.Year=Table2.Year
Run Code Online (Sandbox Code Playgroud)
这个查询对于更大的表来说会非常慢,但我担心如果你只是加入一个名字,那么这个表就不会真正变大,因为你很快会有重复的表.
| 归档时间: |
|
| 查看次数: |
64258 次 |
| 最近记录: |