我已经花了几个小时寻找解决方案(书籍、互联网等),但找不到任何东西。这是我的问题:
我得到了一个按 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/