【问题标题】:How to where clause of two value in the same field?如何在同一字段中使用两个值的 where 子句?
【发布时间】:2017-12-13 17:54:22
【问题描述】:

我有 3 张桌子

对象

ID || NAME
====================
1  || object title 
--------------------
2  || name of object
etc..

道具

ID || NAME
===========
1  || draft
-----------
2  || views
etc..

obj_props

ID || OID || PID || VALUE
=========================
1  || 1   || 1   || 1
-------------------------
1  || 1   || 2   || 70
etc..

我需要选择 draft = 1 且 views > 0 的记录。

我当前的mysql查询:

SELECT o.id, p.name as prop_name, op.value as prop_val 
FROM objects o 
INNER JOIN obj_props op ON o.id = op.object_id 
INNER JOIN props p ON p.id = op.prop_id 
WHERE p.name = 'views' and op.value > 0 

但是当我添加了

AND p.name = 'draft' and op.value = 1

它返回空值。

如果用 OR 替换 AND 运算符 - 代码返回所有记录,但我需要单个对象的搜索道具。

【问题讨论】:

    标签: php mysql sql database


    【解决方案1】:

    您需要使用OR 带括号

    WHERE (p.name = 'views' AND op.value > 0)
       OR (p.name = 'draft' AND op.value = 1)
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2013-10-03
      • 2014-07-11
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多