是否可以在没有“产品”的情况下并排显示没有直接关系的2列(column1xcolumn2)?
看看这个。http://sqlfiddle.com/#!3/212b6/1
我正在尝试创建一个查询,该查询显示所有组ID、网站和历史记录,且重复字段最少。我有3个表-组,网站和历史,但它显示笛卡尔连接。如果我有4个网站和3个历史为1组。它显示了12条记录。我想要这样的东西:
group_id | website | History
1 website1 hist1
1 website2 hist2
1 website3 hist3
最佳答案
在大多数数据库中,可以使用row_number()
来指定行号。这是ANSI标准功能。接近你想要的:
select g.group_id, w.website, h.ma_history
from (select g.*, row_number() over (order by group_id) as seqnum
from tbl_group g
) g full outer join
(select w.*, row_number() over (order by website) as seqnum
from table_website w
) w
on g.seqnum = w.seqnum full outer join
(select h.*, row_number() over (order by ma_history) as seqnum
from table_ma_history h
) h
on h.seqnum = coalesce(g.seqnum, w.seqnum)
与所需的表示不同的是,“缺少的”值不会从一行复制到下一行。相反,它们被表示为空。例如:
group_id | website | History
1 website1 hist1
NULL website2 hist2
NULL website3 hist3
既然你说“类似的东西”,这就足够接近了吗?根据数据库的不同,复制值更容易或更难。
关于sql - 结合1:M表与删除重复字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17024738/