mysql连接多个where

um6iljoc  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(6684)

我有一个sql查询。where子句有点棘手,因为我需要它来告诉fv.position应该大于一个数字,而id\u有一个特定的数字,但只在那个状态下。所以可能有多个堆栈是这样的。
到目前为止,我得出的结论是:

SELECT
    *
FROM
    psx_product p
INNER JOIN
    psx_feature_product fp ON fp.id_product = p.id_product
INNER JOIN
    psx_feature_value fv ON fp.`id_feature_value` = fv.`id_feature_value`
WHERE 
    (fv.position > 0 AND fp.id_feature = 6)
AND
    (fv.position > 5 AND fp.id_feature = 7)
AND
    (fv.position > 2 AND fp.id_feature = 8)

但是我相信上面的例子是错误的处理方式,因为fv.position不知道它只与perentesis中的特征相关,并且叠加where语句,只给出空结果,where,one给出结果。这应该怎么做?

kuhbmx9i

kuhbmx9i1#

如果我理解正确的话,在where子句中,在两种情况之间需要OR,而不是AND,显然一个字段不能同时等于两个不同的值
如果有一个公式可以设置fv.position和fp.id\u feature的参数,那么您可以保存所有特定的条件并编写一个特定的条件。

SELECT * FROM psx_product p
 INNER JOIN psx_feature_product fp ON fp.id_product = p.id_product
 INNER JOIN psx_feature_value fv ON fp.`id_feature_value` = fv.`id_feature_value` WHERE
 (fv.position > 0 AND fp.id_feature = 6) OR
 (fv.position > 5 AND fp.id_feature = 7) OR
 (fv.position > 2 AND fp.id_feature = 8)

相关问题