我有一个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给出结果。这应该怎么做?
1条答案
按热度按时间kuhbmx9i1#
如果我理解正确的话,在where子句中,在两种情况之间需要OR,而不是AND,显然一个字段不能同时等于两个不同的值
如果有一个公式可以设置fv.position和fp.id\u feature的参数,那么您可以保存所有特定的条件并编写一个特定的条件。