如何在同一字段中使用两个值的 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 查询