业务需要查询广告列表,广告类型有两种,分别在两个表保存,需要把两表的结果合并按时间倒叙排序,全部字段都要显示,但两表有部分字段是不同的,若查询结果没有该字段则为置NULL,另外需要附加一个字段表示该条结果是属于哪种类型(查询自哪个表)的。我遇到的问题:
先是两表字段不同导致的[Err] 1222 - The used SELECT statements have a different number of columns
然后不知道怎样插入表示结果来源表表名的字段
我想请教一下这种业务仅通过SQL语句能实现吗?如果可以要怎样实现?结构如下:
-- ----------------------------
-- Table structure for advert_carousel
-- ----------------------------
CREATE TABLE `advert_carousel` (
  `advert_carousel_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '轮播广告标识',
  `biz_user_id` int(11) NOT NULL COMMENT '企业标识',
  `file_lib_carousel` int(11) NOT NULL COMMENT '图片标识',
  `start_time` datetime NOT NULL COMMENT '开始时间',
  `end_time` datetime NOT NULL COMMENT '结束时间',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `modify_time` datetime DEFAULT NULL COMMENT '最后修改时间',
  `redirect_url` varchar(255) DEFAULT NULL COMMENT '跳转URL',
  `industry_id` int(11) DEFAULT NULL COMMENT '作用范围;行业标识;留空则为首页',
  `status` varchar(20) NOT NULL DEFAULT 'activation' COMMENT '状态;activation=激活;invalid=失效;deleted=被删除',
  PRIMARY KEY (`advert_carousel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for advert_recommend
-- ----------------------------
CREATE TABLE `advert_recommend` (
  `advert_recommend_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '标识',
  `biz_user_id` int(11) NOT NULL COMMENT '企业标识',
  `industry_id` int(11) NOT NULL COMMENT '行业标识',
  `start_time` datetime NOT NULL COMMENT '开始时间',
  `end_time` datetime NOT NULL COMMENT '结束时间',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `modify_time` datetime DEFAULT NULL COMMENT '最后修改时间',
  `click_count` int(11) DEFAULT '0' COMMENT '总计点击次数',
  `status` varchar(20) NOT NULL DEFAULT 'activation' COMMENT '状态;activation=激活;invalid=失效;deleted=被删除',
  PRIMARY KEY (`advert_recommend_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;