SELECT ban.seqId AS id, ban.bannerId AS banner_id, ban.bannerName AS banner_ame, ban.fromIdSourceJson AS fromIdSourceJson, ban.position AS position, ban.startPage AS startPage, ban.createTime AS ban_create_time, ban.updateTime AS ban_update_time, bansow.seqId AS sowing_id, bansow.order AS sow_order, sow.sowingName AS sowing_name, sow.picUrl AS sow_picUrl, sow.picType AS sow_picType, sow.picValue AS sow_picValue, sow.status AS sow_status, UNIX_TIMESTAMP(sow.startTime)*1000 AS sow_startTime, UNIX_TIMESTAMP(sow.endTime)*1000 AS sow_endTime, group_concat(sty.sid) AS ban_sids FROM video_operation.bannerConfig ban LEFT JOIN video_operation.bannerConfigStrategy sty ON ban.seqId = sty.rid LEFT JOIN video_operation.bannerSowingConfig bansow ON ban.bannerId = bansow.bannerId LEFT JOIN video_operation.sowingConfig sow ON bansow.sowingId = sow.sowingId WHERE ban.`status` = 'OK' AND sow.`status` = 'OK' AND bansow.status = 'OK' AND ban.`type` = 'center' AND now() BETWEEN sow.startTime AND sow.endTime GROUP BY sow.sowingId ORDER BY sow.updateTime DESC;
时间: 2024-02-14 12:23:45 浏览: 79
这是一条 SQL 查询语句,查询的是 `video_operation` 数据库中的多个表的数据。具体的功能是查询中心悬浮广告配置信息,包括悬浮广告信息、轮播图信息和广告位信息。查询结果按照轮播图的更新时间倒序排列。
这条 SQL 查询语句使用了多个 SQL 关键字和函数,包括:
1. `SELECT`:用于指定查询的列名或表达式。
2. `AS`:用于给查询结果中的列或表别名。
3. `LEFT JOIN`:用于进行左连接操作。
4. `ON`:用于指定连接条件。
5. `WHERE`:用于指定查询条件。
6. `GROUP BY`:用于按照指定的列进行分组。
7. `ORDER BY`:用于指定查询结果的排序方式。
8. `UNIX_TIMESTAMP()`:用于将日期时间转换为时间戳。
具体的查询逻辑可以分为以下几个步骤:
1. 从 `bannerConfig` 表中查询中心悬浮广告的配置信息,包括广告 ID、广告名称、来源、位置、起始页、创建时间和更新时间。
2. 从 `bannerConfigStrategy` 表中查询中心悬浮广告的策略信息,包括广告位 ID。
3. 从 `bannerSowingConfig` 表中查询中心悬浮广告的轮播图信息,包括轮播图 ID、顺序、名称、图片 URL、图片类型、图片值、状态、开始时间和结束时间。
4. 从 `sowingConfig` 表中查询轮播图的信息,包括轮播图 ID、图片 URL、图片类型、图片值、状态、开始时间和结束时间。
5. 将以上查询结果按照 `sowingId` 分组,并将相同 `sowingId` 的记录合并成一条记录,其中 `sid` 列通过 `group_concat()` 函数合并为一个字符串,表示一个广告位对应的多个 ID。
6. 最后将查询结果按照 `updateTime` 倒序排列。
阅读全文