我遇到查询问题。
小提琴:https://www.db-fiddle.com/f/JXQHw1VzF7vAowNLFrxv5/1
这不起作用。 所以我的问题是:当我想要使用这两个条件时,需要做些什么来获得结果。
(attr_key = 0 AND attr_value & 201326592 = 201326592)
和
(attr_key = 30 AND attr_value & 8 = 8)
提前致谢!
祝你好运
答案 0 :(得分:1)
检查items_attributes
表中是否存在一些键值对的一种方法是使用条件聚合:
SELECT i.id
FROM items i
LEFT JOIN items_attributes ia
ON i.id = ia.owner
GROUP BY
i.id
HAVING
SUM(CASE WHEN ia.key = 0 AND ia.value = 201326592 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN ia.key = 30 AND ia.value = 8 THEN 1 ELSE 0 END) > 0
上述查询的技巧是我们扫描每个项目的每个键/值对群集,然后检查您期望的对是否存在。
注意:我的查询只返回与所有键值对匹配的项中的id
值。如果你想从两个表中的任何一个引入其他列,你可以简单地添加更多连接到我上面写的内容。