2014-10-31 76 views
0

我知道这个问题已经被多次询问过了,而且我确实都读过了。但是,我的情况有点不同,我仍然无法通过下面的SQL语句获得正确的结果。比较来自不同表格的两列

我有两个表,如下图所示:

TABLE A 
###################################################################### 
    | ID | IP_Address | Username | Comments 
---------------------------------------------------------------------- 
    1  128.  abc  travel to US 
    2  127.  dzd  author 
    3  127.  abc  It's not redundant at all. Not offering a single function 
    4  124.  deb  I just lost laptop. How do I report it? 
----------------------------------------------------------------------- 



TABLE B 
###################################################################### 
    | keywords  | 
---------------------------------------------------------------------- 
    author 
    How do I report 
----------------------------------------------------------------------- 

我的本意是在表A中退出时,所有记录时,注释列部分匹配表中的关键字之一B.

这里查询:

SELECT ID, IP_Address, UserName, Comments FROM TABLEA 
FULL JOIN TABLEB 
ON TABLEA.Comments LIKE TABLEB.Keywords 
WHERE TABLEA.Comments IS NOT NULL AND TABLEB.Keywords IS NOT NULL 

它的工作原理,但它只拉出精确的匹配,而不是评论的一部分。
在我的示例中,它提取“作者”记录,但不是“我只是丢失了笔记本电脑,我该如何报告它?”记录。

有没有办法扭转我的查询来满足我的要求?

感谢

JPL

回答

2

添加%至LIKE子句

SELECT ID, IP_Address, UserName, Comments FROM TABLEA 
FULL JOIN TABLEB 
ON TABLEA.Comments LIKE '%' + TABLEB.Keywords + '%' 
WHERE TABLEA.Comments IS NOT NULL AND TABLEB.Keywords IS NOT NULL 
+0

尽管简单,但我想不起来!有时候,休息一下可以解决所有问题! – JPL 2014-10-31 21:06:11

1

这会做你的需要。

SELECT ID, IP_Address, UserName 
FROM TABLE1 T1 
CROSS APPLY (SELECT Keywords FROM Table2) T2 
WHERE CHARINDEX(T2.Keywords,T1.Comments) >0 

CROSS应用可以与全加盟更换,但交叉如果在第二个表的详细列更好地应用作品。

+0

谢谢LeeG。您的结果完全符合雷达的建议。 非常感谢。 – JPL 2014-10-31 21:21:29

相关问题