php - mysql加入多个where
问题描述
我有一个 sql 查询。Where 子句有点棘手,因为我需要它来告诉 fv.position 应该大于一个数字,而 id_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)
AND
(fv.position > 5 AND fp.id_feature = 7)
AND
(fv.position > 2 AND fp.id_feature = 8)
但是我认为上面的例子是错误的处理方式,因为 fv.position 不知道它只连接到 perentesis 中的特征,并且堆叠 where 语句,只是给出空结果,where,一个给出结果. 这应该如何正确完成?
解决方案
如果我理解正确,您在 where 子句中需要案例之间的 OR,而不是 AND,显然一个字段不能同时等于 2 个不同的值
如果有公式可以设置 fv.position 和 fp.id_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)
推荐阅读
- kubernetes - 两个容器之间共享的卷“忙或被锁定”
- geopandas - Geoview和geopandas groupby投影错误
- excel - PrintPreview 不一致的行为
- wordpress - 向 Revolution Slider 添加 Webp 支持
- python - 无法使用 Python 3.8 将 BSTR 指针传递给 COM 对象
- android - 启动模拟器时找不到adb
- c# - 在 IIS 中托管的活动目录 c# 网站
- quartz.net - 使用 Quartz 为每两周在周四和周五运行的任务创建一个 cron express
- python - tensorflow 范围在 Jupyter 实验室中丢失
- spring-boot - 使用基本身份验证和无状态会话的无效会话