SELECT “id”, “subs”, “name”, “sort”, “level”, “state”, (SELECT cast(COUNT(*) as integer) AS “count” FROM “goods” AS “goods” WHERE “goods”.”deletedAt” IS NULL AND “goods”.”state” = 1 AND “goods”.”classes” && ARRAY[“class”.”id”]::INTEGER[]) AS “goods_count” FROM “classes” AS “class” WHERE ((“class”.”deletedAt” > ‘2020-06-08 15:55:25.728 +08:00’ OR “class”.”deletedAt” IS NULL) AND (“class”.”level” = 1 AND “class”.”state” = 1 AND “goods_count”>0)) ORDER BY “class”.”sort” ASC, “class”.”id” DESC;
SELECT “class”.”id”, “class”.”subs”, “class”.”name”, “class”.”sort”, “class”.”level”, “class”.”state”, cast(COUNT(“goods”.”id”) as integer) AS “count” FROM “classes” AS “class” RIGHT OUTER JOIN goods on (“goods”.”deletedAt” IS NULL AND “goods”.”state” = 1 AND “goods”.”classes” && ARRAY[“class”.”id”]::INTEGER[]) WHERE ((“class”.”deletedAt” > ‘2020-06-08 15:55:25.728 +08:00’ OR “class”.”deletedAt” IS NULL) AND (“class”.”level” = 1 AND “class”.”state” = 1)) GROUP BY “class”.”id” ORDER BY “class”.”sort” ASC, “class”.”id” DESC ;
或者在父查询中再次使用联合检索数据
SELECT “id”, “subs”, “name”, “sort”, “level”, “state”, (SELECT cast(COUNT() as integer) AS “count” FROM “goods” AS “goods” WHERE “goods”.”deletedAt” IS NULL AND “goods”.”state” = 1 AND “goods”.”classes” && ARRAY[“class”.”id”]::INTEGER[]) AS “goods_count” FROM “classes” AS “class” WHERE ((“class”.”deletedAt” > ‘2020-06-08 15:55:25.728 +08:00’ OR “class”.”deletedAt” IS NULL) AND (“class”.”level” = 1 AND “class”.”state” = 1 AND (SELECT cast(COUNT() as integer) AS “count” FROM “goods” AS “goods” WHERE “goods”.”deletedAt” IS NULL AND “goods”.”state” = 1 AND “goods”.”classes” && ARRAY[“class”.”id”]::INTEGER[])>0)) ORDER BY “class”.”sort” ASC, “class”.”id” DESC;
Redis的基本类型 1.String字符串: 格式:set key value string类型是二进制安全的。redis的string类型可以包含任何数据,例如图片或者序列化的对象。string类型是Redis的最基本的数据类型,一个键最大能存储512MB。 2.Hash哈希 格式:hmset name key value redis的hash是一个键值对key value的集合。 redis的hash是一个string类型的field和value的映射表,hash适合用于存储对象。 hash = { key1:value1, key2:value2, kay3:value3 } 3.List列表 Redis的列表是简单的字符串列表,按照插入顺序,你可以添加一个元素到列表的头部,或者尾部。 格式:lpush name value 在key对应list的头部添加字符串元素。 格式rpush name value 在key对应list的尾部添加字符串元素 格式lrem name index 4.Set集合 格式:sadd name value Redis的Set是string类型的无序集合。 集合是通过hash表实现的所以添加删除查找的复杂都是O(1) 5.Zset 有序集合 格式 zadd name score value Redis zset 和set 一样也是string类型元素的集合,且不允许重复的成员 不同的是每个元素都会关联一个double类型的分数,redis是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,分数是可以重复的。 其中分数score是double 16位超过位数 会转换成科学算法所以最好不要超过16位 Redis持久化 1.RDB rdb是Redis DataBase缩写 功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数