mysql - 将子查询限制为同一行中的 2 个参数

标签 mysql sql database

我已经花了几个小时寻找解决方案(书籍、互联网等),但找不到任何东西。这是我的问题:

我得到了一个按 2 个条件标记的项目表:让我们将它们命名为 crit1 和 crit2。对于 crit1 和 crit2 的每个项目,我可以使用以下 int 示例值 (criteria1,criteria2):(1,5) (5,2) (4,7) (8,6) 等。

在另一个表中,我存储订阅了按上述条件过滤的某些项目的用户。假设 user_id 1 订阅了以下项目类型 (criteria1, criteria2):(1,5) (2,7)。当我进行查询以获取用户 1 订阅的项目时,我得到标记为 (1,5) (2,7) 的项目,但也得到标记为 (1,7) 或 (2,5) 的项目。 SQL Select 查询正在每一行之间进行交叉比较。

一般来说,我想知道如何进行从同一行中的多个字段过滤的查询(不允许跨行)。

我尝试使用 JOINS 对问题进行排序,但无法在同一个 JOIN 中链接 criteria1 和 criteria2。我必须使用 2 个 JOINS,这使它们独立(并且将发生 criteria1 和 criteria2 之间的交叉比较)。

最佳答案

在 JOIN 的 ON 子句中使用 AND 运算符:

SELECT i.* FROM subscriptions s
JOIN items i
ON i.crit1 = s.crit1 AND i.crit2 = s.crit2
WHERE s.user_id = 1

关于mysql - 将子查询限制为同一行中的 2 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958718/

相关文章:

mysql - 插入后触发将所有行的副本写入审核文件

java - ResultSet 关闭后不允许操作(mysql,java)

SQL 按 ID 查找单独列中值仅为零的记录

sql - 将列内包含 JSON 数组的行扩展到多行

mysql - 您如何维护数据库结构的版本控制?

当包含某些列时,MySQL ORDER BY AVG() DESC 不起作用

近30天内失约的MYSQL语句

java - 用于测试的免费 postgres 托管

jquery - 在数据表中设置导出文件名

php - 从Bootstrap Date中删除填充有从mysql转换为json数组的数据