现在有两个数据表,一个是商品表,一个是文章表,他们要在同一个前端列表混合显示并做分页,有可能实现吗?麻烦提供下思路,谢谢
SELECT id, product_name as name,TYPE =0 FROM 商品表
UNION
SELECT id, title as name,TYPE =1 FROM 文章表 LIMIT 0 , 30
类似这样
按照你现在说的可以这样做
另外建一张表
create table mixed_table (
id int unsigned NOT NULL AUTO_INCREMENT,
source_id int unsigned COMMENT '商品id或者文章id',
source_type tinyint unsigned COMMENT '0 商品 1 文章',
PRIMARY KEY (id)
);
其他字段按需添加
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
你可以合并之后,定制一个排序规则。或者定制一个合并规则。
因为两个表完全没关系,如果你就是想统一处理,比如,你一页10个数据,你要整8篇文章,2个商品,就定义一下在哪个地方插入这两条商品,取到这十个数据遍历整理成一串传到前面,那下一页就相当于取第9到16篇文章,第3到4个商品,一样8个和2个,就可以分页了。不过这样其实挺蛋疼的,增加了后端开销。
所以,你可以直接把这些数据不合并直接往前端扔,前端接收到之后再排一下,想怎么排怎么排。
那,还有可能,你这个玩意本身分页与文章发布,商品创建等时间相关,在sql中可以直接用一个统一的时间作为排序根据进行分页,将两表合并。
其实还是要看你究竟业务是想怎么做和技术实现。