mysql - 来自不同表的MySQL多个AND条件
问题描述
我有以下数据库结构:
产品
+---------+-------+--------+
| name | upc | model |
+---------+-------+--------+
| Value 1 | 1,234 | phone |
| Value 2 | 2,345 | tablet |
+---------+-------+--------+
产品导入
+-----------+---------------+----------+
| to_import | id_oc_prd_map | category |
+-----------+---------------+----------+
| 1 | 1,234 | apple |
| 2 | 2,345 | banana |
+-----------+---------------+----------+
我想从具有多个条件的产品表中获取行:
SELECT *
FROM product
WHERE upc IN (SELECT id_oc_prd_map FROM product_import)
AND product.model = 'phone'
AND product_import.category = 'apple'
- 通过公共键选择项目(upc & id_od_prd_map)
- 型号='电话'
- 类别='苹果'
在上面的例子中,我应该得到
+---------+-------+--------+
| name | upc | model |
+---------+-------+--------+
| Value 1 | 1,234 | phone |
作为结果,但第二个 AND 语句出现错误,因为它在另一个表中。
解决方案
只需找到upc
where category 等于“apple”:
SELECT *
FROM product
WHERE upc IN (SELECT id_oc_prd_map FROM product_import WHERE import.category = 'apple')
AND product.model = 'phone'
或使用:
SELECT *
FROM product
INNER JOIN product_import ON product_import.category = 'apple'
AND product_import.id_oc_prd_map = product.upc
WHERE product.model = 'phone'
推荐阅读
- ruby-on-rails - 哪个 Rails 版本与哪个 Bundle 版本兼容
- sql - 如何获取两列日期(fromDate 和 toDate)之间的所有日期。并且获得的日期必须在单行中,以逗号分隔
- c++ - 无法在 C++ 代码块中构建和运行
- opencv - 单点错误三角测量(用 4 点板校准)
- css - 如何在 Bootstrap 4 的页面上放置“卡片”?
- kotlin - Java/Kotlin 输出 Ed25519 密钥对作为 JCE KeyPair 实例和 OpenSSH 格式
- javascript - JavaScript 计算季度计费
- python-3.x - Python:删除列表中所有元素的好习惯是什么?
- c# - ASP.NET Core MVC Web API 部署问题
- php - 会话变量在php中不断覆盖