Sqlite 多表查询

前端之家收集整理的这篇文章主要介绍了Sqlite 多表查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
联表查询 table_a 和 table_b:
已知:
    1.table_a和table_b中有个'time'字段对应。
    2.table_a中的一条记录table_b中可能有0~n条记录与之对应。
查询: 
    table_a中的所有记录,每条记录对应的table_b中的记录数量

table_a:

@H_404_19@1 @H_404_19@name1 @H_404_19@123 @H_404_19@2 @H_404_19@name2 @H_404_19@456 @H_404_19@3 @H_404_19@name3 @H_404_19@789
id name time

table_b:

@H_404_19@1 @H_404_19@123 @H_404_19@/a/b/123a.txt @H_404_19@2 @H_404_19@123 @H_404_19@/a/b/123b.txt @H_404_19@3 @H_404_19@123 @H_404_19@/a/b/123c.txt @H_404_19@4 @H_404_19@456 @H_404_19@/a/b/123c.txt
id time path

想要的查询结果是:

@H_404_19@1 @H_404_19@name1 @H_404_19@123 @H_404_19@3 @H_404_19@2 @H_404_19@name2 @H_404_19@456 @H_404_19@1 @H_404_19@3 @H_404_19@name3 @H_404_19@789 @H_404_19@0
id name time count(对应table_b中的记录数)
sql 语句如下:
SELECT table_a.id,table_a.name,table_a.time as time,COUNT(table_b.time) AS count FROM table_a LEFT JOIN table_b ON table_a.time = table_b.time GROUP BY table_b.time 
如果只需要知道table_b中是否有对应记录,而不需要知道具体的数量,那么可以把第一行修改为(添加 DISTINCT ):
SELECT table_a.id,COUNT(DISTINCT table_b.time) AS count ...
注意: GROUP BY 和 COUNT 后面是同一张表的同一个字段
原文链接:https://www.f2er.com/sqlite/198050.html

猜你在找的Sqlite相关文章