首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

关于sqlite结果集交加查询

2013-06-19 
关于sqlite结果集交集查询大家好,一起讨论个sql查询问题?表结构:-------------------------------------id

关于sqlite结果集交集查询
大家好,一起讨论个sql查询问题?
表结构:
-------------------------------------
id        integer     主键
msg       varchar(100) 内容
parent_id integer      父节点id
level     integer      级别
-------------------------------------
数据:
父节点1
    子节点1
    子节点2
父节点2
    子节点1
    子节点3
父节点3
    子节点5
    子节点6

需求:查找拥有相同子节点数据的交集。例如:查找节点id为1,2(即:“父节点1”、“父节点2”)的相同子节点交集=“子节点1”,查找节点id为1,2,3(即:“父节点1”、“父节点2”、“父节点3”)的相同子节点交集为空集。
那么这个sql语句应该怎么写?谢谢! SQLite SQL 需求
[解决办法]

sqlite> select * from MessageInfo;
id
[解决办法]
msg
[解决办法]
parent_id
[解决办法]
level
1
[解决办法]
父节点1
[解决办法]
0
[解决办法]
1
2
[解决办法]
父节点2
[解决办法]
0
[解决办法]
1
3
[解决办法]
父节点3
[解决办法]
0
[解决办法]
1
4
[解决办法]
子节点1
[解决办法]
1
[解决办法]
2
5
[解决办法]
子节点2
[解决办法]
1
[解决办法]
2
6
[解决办法]
子节点1
[解决办法]
2
[解决办法]
2
7
[解决办法]
子节点3
[解决办法]
2
------解决方案--------------------


2
8
[解决办法]
子节点5
[解决办法]
3
[解决办法]
2
9
[解决办法]
子节点6
[解决办法]
3
[解决办法]
2
sqlite> select *
   ...> from MessageInfo a
   ...> where exists (select 1 from MessageInfo where parent_id=1 and msg=a.msg)
   ...> and exists (select 1 from MessageInfo where parent_id=2 and msg=a.msg);
id
[解决办法]
msg
[解决办法]
parent_id
[解决办法]
level
4
[解决办法]
子节点1
[解决办法]
1
[解决办法]
2
6
[解决办法]
子节点1
[解决办法]
2
[解决办法]
2
sqlite> select *
   ...> from MessageInfo a
   ...> where exists (select 1 from MessageInfo where parent_id=1 and msg=a.msg)
   ...> and exists (select 1 from MessageInfo where parent_id=2 and msg=a.msg)
   ...> and exists (select 1 from MessageInfo where parent_id=3 and msg=a.msg);
sqlite>

热点排行