mysql - 如果用户提供的搜索词与表 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 中的产品与搜索词匹配。
解决方案
我认为你应该使用子查询
SELECT * FROM A WHERE Product_Id IN (SELECT ID FROM B WHERE Name LIKE '%ca%')
推荐阅读
- netlogo - 如何在 NetLogo 中创建一个按钮来显示和消失一个补丁标签?
- xpath - ImportXML "post_name" 从一篇文章中,找不到合适的 XPath
- python - 在任务中实施 12 条中的 8 条中止规则
- python - 如何在django中的url中的域名前添加前缀?
- https - 在 Angular 中使用 HTTPS 访问后端 Web 服务
- firebase - Firebase + Express.js:如何从相关对象中检索数据
- mysql - 由于错误的mysql路径,在make sub-mysql时为qt构建mysql插件失败
- angular - 放大 Graphql 从数组中删除项目(角度)
- javascript - 如何使用 Javascript 中的 if 语句修复我的 while 循环
- python - 读取文件夹中的所有 CSV 文件并读取属于特定标题的内容并将数据写入 1 个 CSV 文件