我有两张桌子
架构表:
ID | ITEM
-----------
01 | i1
02 | i2
03 | i3
记录表:
RecordID | ITEM | VALUE
----------------------
RE001 | i1 | 100
RE002 | i2 | 102
RE003 | i1 | 200
RE003 | i2 | 220
我想得到一个看起来像这样的结果表
RecordID | ITEM | VALUE
----------------------
RE001 | i1 | 100
RE001 | i2 | null
RE001 | i3 | null
RE002 | i1 | null
RE002 | i2 | 102
RE002 | i3 | null
RE003 | i1 | 200
RE003 | i2 | 220
RE003 | i3 | null
我尝试使用LEFT JOIN
和CROSS JOIN
,这些返回我的合并行
同一项为空
有没有方法可以做这样的事情?
答案 0 :(得分:2)
你想要的答案是:
select q1.recordid, q2.item, `value`
from (
(select distinct recordid
from `record`) q1
cross join
(select distinct item
from `schema`) q2
) left join `record` r
on r.recordid = q1.recordid and r.item = q2.item
order by q1.recordid, q2.item
但是由于内部查询中的交叉连接,它很快就会变成一个非常庞大的结果集。