如何在同一字段中使用两个值的 where 子句?

Posted

技术标签:

【中文标题】如何在同一字段中使用两个值的 where 子句?【英文标题】:How to where clause of two value in the same field? 【发布时间】: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 运算符 - 代码返回所有记录,但我需要单个对象的搜索道具。

【问题讨论】:

【参考方案1】:

您需要使用OR 带括号

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

【讨论】:

以上是关于如何在同一字段中使用两个值的 where 子句?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 where 子句中的列编写具有不连续值的 Cassandra 查询

MySql中如何在一个字段(值为字符串)中查找某一个字符

如何在 WHERE 子句中使用混合文本和日期字段?

如何在 Ruby 中使用 Where 子句 (PostgreSQL) 中的变量编写查询

使用JPA在Sql中具有不同值的多个语句where子句

如何通过两个不同的子句同时查询两个字段的计数?