是否可以在没有“产品”的情况下并排显示没有直接关系的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/

10-10 11:33