首页 > 解决方案 > 如果用户提供的搜索词与表 B 中的列匹配,则根据表 A 中的行的 ID 选择表 A 中的行/

问题描述

假设我有 2 张桌子,A 和 B,它们看起来像这样:

Table A - Orders
+----+-------------+------------+
| ID | Description | Product ID |
+----+-------------+------------+
|  1 | ABC         |          4 |
|  2 | DEF         |          5 |
|  3 | GHI         |          6 |
+----+-------------+------------+

Table B -  Products
+----+-------------+
| ID | Name        |
+----+-------------+
|  4 | cat         |
|  5 | cactus      | 
|  6 | cow         | 
+----+-------------+

如果表 B 中的“名称”列与搜索词匹配,我想返回表 A 中行的结果,如果适用,使用类似LIKE %searchterm%SQL 的方法。基本思想是,根据表 A 中的产品 ID,它会在表 B 中查找具有该 ID 的行,然后检查名称列是否与搜索词匹配,如果匹配,则返回表 A 中具有相关项的行产品编号。

所以搜索词是“ca”并且查询已运行,​​它将返回表 A 中的第 1 行和第 2 行(猫和仙人掌),因为表 B 中的产品与搜索词匹配。

标签: mysql

解决方案


我认为你应该使用子查询

SELECT * FROM A WHERE Product_Id IN (SELECT ID FROM B WHERE Name LIKE '%ca%') 

推荐阅读