[英]Compare two columns from different tables
我知道这个问题已经问过几次了,我确实读了全部。 但是,我的情况几乎没有什么不同,我仍然无法通过下面的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
-----------------------------------------------------------------------
我的意图是在“注释”列部分匹配表B中的关键字之一时,提取表A中的所有记录。
这是查询:
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
它可以工作,但只提取完全匹配项,而不是注释的一部分。
在我的示例中,它提取的是“作者”记录,而不是“我只是丢失了笔记本电脑。如何报告?” 记录。
有没有一种方法可以扭曲我的查询以满足我的要求?
谢谢
联合警察
在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
这将满足您的需求。
SELECT ID, IP_Address, UserName
FROM TABLE1 T1
CROSS APPLY (SELECT Keywords FROM Table2) T2
WHERE CHARINDEX(T2.Keywords,T1.Comments) >0
可以将CROSS APPLY替换为完全联接,但是如果第二个表中有更多列,则交叉应用的效果会更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.