SQLite查询返回0结果

时间:2018-03-11 14:25:24

标签: sqlite

我遇到查询问题。

小提琴:https://www.db-fiddle.com/f/JXQHw1VzF7vAowNLFrxv5/1

这不起作用。 所以我的问题是:当我想要使用这两个条件时,需要做些什么来获得结果。

(attr_key = 0 AND attr_value & 201326592 = 201326592)

(attr_key = 30 AND attr_value & 8 = 8)

提前致谢!

祝你好运

1 个答案:

答案 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值。如果你想从两个表中的任何一个引入其他列,你可以简单地添加更多连接到我上面写的内容。