工作中有遇到想利用类似情况进行统计,不对原表进行修改
表A数据如
id:
A,
B,
C,
D,
E,
F,
G
表B数据为
date:
2020-01-01,
2020-01-02,
2020-01-03,
想实现查询结果为如下:
id date
A, 2020-01-01
A, 2020-01-02
A, 2020-01-03
B, 2020-01-01
B, 2020-01-02
B, 2020-01-03
C, 2020-01-01
C, 2020-01-02
C, 2020-01-03
... ...
想知道有方法可以实现么?
select t1.id,t2.date from (select id,"" as t from A) t1 left join (select name,"" as t from B) t2 on t1.t=t2.t order by t1.id,t2.date asc;
定义一个虚拟字段就可以了,但是这样查询效率很差,不建议这样做,如果要做也只限制在表只有几十行以内的数据,如果数据太大还是建议在业务逻辑中做。
可以用笛卡尔积吧,相当于两个表中的所有行进行排列组合。若表a有X行,表b有Y行,则将返回XY行记录。