我正在寻找一些SQLite的帮助。我试图以尽可能简单的方式编写查询。也就是说,使用SQL语句而不是检索一组数据,然后通过迭代两者来设置和比较它们。
查看下表的摘录:我知道两个父ID,我想找到他们共同拥有的所有子ID。所以父母291& 673有755个共同点。他们可能有一个或多个孩子的共同点。
如何编写select语句来查找755?
提前感谢任何想法。 大卫
答案 0 :(得分:0)
自联接可能是最有效的方法 -
SELECT DISTINCT(a.zchild)FROM a,b WHERE(a.zparent = 291 OR a.zparent = 293)AND(a.zchild = b.zchild AND a.zparent<> b.zparent)
答案 1 :(得分:0)
您可以为这些父母的每个孩子创建一个组,然后搜索同时拥有父母的组:
SELECT zChild
FROM zPcRel
WHERE zParent IN (291, 673)
GROUP BY zChild
HAVING COUNT(*) = 2
或者,使用compound query与父母双方的孩子们相交:
SELECT zChild FROM zPcRel WHERE zParent = 291
INTERSECT
SELECT zChild FROM zPcRel WHERE zParent = 673
您自己的查询也可以使用:
SELECT zChild
FROM zPcRel
WHERE zChild IN (SELECT zChild
FROM zPcRel
WHERE zParent = 673)
AND zParent = 291
哪些查询最有效取决于数据的形状以及有哪些索引;你必须衡量。